如何解决如何删除csv文件中的不可打印字符?
我的文件中有一些无效字符要删除。但是我遇到了其中一个奇怪的问题。
当我尝试使用替换函数时,我收到一个错误 SyntaxError: EOL while scaning string literal。
我发现我正在处理 \x1d
,它是一个组分隔符。我有这个代码来删除它:
import pandas as pd
df = pd.read_csv('C:/Users/tkp/Desktop/Holdings_Download/dws/example.csv',index_col=False,sep=';',encoding='utf-8')
print(df['col'][0])
df = df['col'][0].encode("utf-8").replace(b"\x1d",b"").decode()
df = pd.DataFrame([x.split(';') for x in df.split('\n')])
print(df[0][0])
输出:
还有其他方法可以做到这一点吗?因为在我看来,我不能做得更糟了。
解决方法
请注意,您收到了 SyntaxError。这意味着 Python 永远不会真正运行您的程序,因为它无法弄清楚程序是什么!
老实说,我不太确定为什么在这种情况下会发生这种情况,但是在字符串常量中使用“exotic”字符总是有点不确定,因为它使您依赖于源代码的字符编码是什么,并让您任由各种有问题的编辑器摆布。因此,我建议使用 '\uXXXX'
语法为要替换的字符显式编写 Unicode 编号。 (看起来你这里有的是 U+2194 双箭头,所以 '\u2194'
应该这样做。)
话虽如此,我将首先通过将 '↔'
位更改为更普通的东西(例如 'x'
)并查看是否会导致相同的错误来验证这确实是问题所在。如果是这样,那么您的问题出在其他地方...
您必须指定在字符集中定义此字符的编码。
df = df.replace('#','',encoding='utf-8')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。