for each in os.listdir(path): sub_path = path+"/"+each files = glob.glob(os.path.join(sub_path, "*.xlsx")) for f in files: df = pd.read_excel(f) data = data.append(df) df2 = df2.append(data) return df2 df = read_files("...my_path")

然而,它将从excel文件中读取的数据中的换行字符转换为 _x000D_ 。例如,如果一个特定的单元格值是。

abcde

It becomes:

abcde_x000D_

我怎样才能消除这一点,并在阅读步骤中真正删除换行,从而不产生_x000D_

2 个评论
@RoyBubis的解决方案是在数据被读入数据框之后才应用的。我的答案试图在读入pandas之前进行处理。你可以试试这两种方法,看看哪种方法对你来说更有效。
@RoyBubis 是的,这实际上是摆脱了这些字符,谢谢你!
python
excel
Leyla Alkan
Leyla Alkan
发布于 2022-03-22
1 个回答
SNygard
SNygard
发布于 2022-03-22
已采纳
0 人赞同

基于这个相关问题替换代码,似乎Excel使用的是\nchr(10)作为换行,但你的文件有\r\nchr(13)chr(10)。避免这种情况的一个方法是进行替换操作。每次你看到\r\n,就用\n替换它。在向pandas发送之前,我在缓冲区内修改文件。

import numpy as np
import os
import glob
def read_files(path):
    df2 = pd.DataFrame()
    data = pd.DataFrame()
    for each in os.listdir(path):
        sub_path = path+"/"+each
        files = glob.glob(os.path.join(sub_path, "*.xlsx"))
        for f in files:
            with open(f, 'rb') as fp:
                text = fp.read().replace(b'\r\n', b'\n')
            df = pd.read_excel(text)