csv Dataframe 中的替换函数删除的内容超出预期

iaqfqrcu  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(83)

假设我有下面的csv文件:

Column1;Column2
AB; Test

其中包含一个NUL字节字符:

我想用Pandas把它读入,操作它,然后再导出。我想去掉NUL字节字符,我的代码如下:

import pandas as pd
df=pd.read_csv(r'C:\folder\test.csv', sep=";", encoding="utf-8")
df=df.replace('\x00','', regex=True) 
df.to_csv(r'C:\folder\testoutput.csv', sep=";", index=False, encoding="utf-8")

我希望只删除NUL字节字符,但是,删除了更多的字符:

所以它删除了整个“细胞”,也删除了“测试”。但我不想这样。
为什么,我的错误在哪里?我怎么能只删除NUL字节字符?

hvvq6cgz

hvvq6cgz1#

问题不在于replace,而在于read_csv将NULL字符作为行终止符处理。
在将NULL传递给read_csv之前,可以手动删除它:

import io

f = io.StringIO(open(r'C:\folder\test.csv').read().replace('\x00', ''))

df = pd.read_csv(f, sep=";", encoding="utf-8")

输出:

Column1 Column2
0      AB    Test

或者,如果您只想删除没有Pandas的NULL:

with open(r'C:\folder\test.csv', 'r') as f1, open(r'C:\folder\test_clean.csv', 'w') as f2:
    for line in f1:
        f2.write(line.replace('\x00', ''))

相关问题