【发布时间】:2021-05-07 13:32:26
【问题描述】:
我的文件中有一些我要删除的无效字符。但是我遇到了一个奇怪的问题。
当我尝试使用替换功能时,我收到一个错误 SyntaxError: EOL while scanning 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])
输出:
还有其他方法可以做到这一点吗?因为在我看来,我不能做得更糟。
【问题讨论】:
-
你能提供一个可重现的例子吗?
-
您似乎遇到了某种字符编码问题。如果我是一个赌徒,我敢打赌那个奇怪的字符应该是一个“ö”,这样整个事情就变成了“Coöperatiev”(似乎在荷兰语中很常见)。您能检查一下 CSV 文件的相应行中实际包含哪些字节值吗?
-
你的做法有什么不好?请用客观的术语解释您认为“更好”的解决方案是什么样的。
-
@Ture Pålsson 10 个字节,包括第 10 个不可见字节。
标签: python python-3.x ascii non-ascii-characters