python - 在 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+V
并Control+M
在命令行上生成这个字符。
更新::我想,^M 实际上是“\r”。我可以用 sed 替换它。我认为如果文件被读取为二进制文件,替换 '\r' 会很容易。在 pandas read_csv 方法中这样的事情可能(读取为二进制)吗?
这些 csv 文件有数百万行,这些不需要的字符随机分布在不同的列中。我需要知道:
1:为什么这些字符在“|”时会产生问题 是分隔符?
2:如何在python中去除csv文件中的坏字符?
3:是否可以在熊猫中加载文件时处理此类文件/数据,而不是单独删除此类字符然后读取 csv ?
解决方案
推荐阅读
- python - 没有找到任何参数的 Django NoReverseMatch 错误。已尝试 1 种模式
- java - 在空对象引用上获取 NullPointerException int android.media.MediaPlayer.getDuration()'
- image-processing - 与其他类相比,如何将图像数量较少的类的数据加倍?
- python - Asciimatics 键盘输入
- c# - 不完整的堆栈跟踪信息
- android - Android parse-SDK-android 和 facebook SDK 不兼容
- django - Django 中的 OneToOneField
- node.js - 请告诉我如何在流管道在 nodeJS 中完全工作后打印文件中的空间
- node.js - 如何在 Heroku 上运行两台服务器?
- azure - Azure AD B2C 中的登录电子邮件域验证