首页 > 解决方案 > 在 pandas 中执行 read_csv 时从 csv 文件中删除控制/隐藏/不可打印字符

问题描述

我已经尝试了各种以前发布的问题,但到目前为止没有任何帮助。我有打算在熊猫中加载的 csv 文件。我在下面尝试过:

import pandas as pd
ONTs=pd.read_csv("myfile.csv", sep="|", error_bad_lines=False,usecols=[*range(0,10)], index_col=False)
ONTs.columns=["ONTID","OPSTATE","ADMIN","RANGED","EQPT","DESC1","DESC2","SLID","ACTSW","SERIAL"]

有些列显示“Nans”,而实际上它们在 csv 中有值。我想在某些被视为换行符的行中有一些(隐藏的、不可打印的、控制的)字符,如“ ^M(5e 4d in hex) ”?下面是一个示例行,列用“|”分隔。

702-KMISR:R1.S1.LT4.PON8.ONT77|Up|Unlocked|Yes||MOSABCsa4-ONT2|172317233|17-231-7233^M|ACTSW|DISABLED|MYSNB3665846|11.2|-27.2|PASSive|ACTSW|

我在下面尝试使用 sed 并删除了坏字符,我可以在 pandas 中加载文件而不会出现问题:

sed -i 's/^M//g' myfile.csv

这里^M不是我可以输入的字符,但我必须按文字键Control+VControl+M在命令行上生成这个字符。

更新::我想,^M 实际上是“\r”。我可以用 sed 替换它。我认为如果文件被读取为二进制文件,替换 '\r' 会很容易。在 pandas read_csv 方法中这样的事情可能(读取为二进制)吗?

这些 csv 文件有数百万行,这些不需要的字符随机分布在不同的列中。我需要知道:

1:为什么这些字符在“|”时会产生问题 是分隔符?

2:如何在python中去除csv文件中的坏字符?

3:是否可以在熊猫中加载文件时处理此类文件/数据,而不是单独删除此类字符然后读取 csv ?

标签: pythonpandascsvtext-processing

解决方案


推荐阅读