用熊猫处理代理人

tar*_*pka 6 python-3.x pandas

保存数据时

data.to_csv(outp_file, encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

我有时会遇到这样的错误

UnicodeEncodeError:'utf-8'编解码器无法编码233-234位置的字符:不允许使用代理

在python3中,您可以简单地替换这些字符

>> "abc\udc34xyz".encode('utf-8', 'replace').decode('utf-8')
'abc?xyz'
Run Code Online (Sandbox Code Playgroud)

但是这里我有一个N行和M列的数据帧.我可以用代理删除行,但跳过整个数据帧并不好.

问题是我不知道它们在哪些行和哪些列中.

我正在寻找一种可以通过以下方式应用的解决方案

try:
   data.to_csv(outp_file, encoding='utf-8')
except UnicodeEncodeError:
   # process data and save it without surrogates...
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

J_H*_*J_H 0

目前尚不清楚您的 unicode 输入是什么样子,也不清楚为什么它们偶尔会具有需要低代理(如 DC34)的非 UTF16 代码点。如果您的数据大部分适合 USASCII,那么iconv可能会提供一种有用的方法来去除不方便的代码点:

$ cat foo1.csv | iconv -c -f utf16 -t latin1 | iconv -f latin1 -t utf8 > foo2.csv
Run Code Online (Sandbox Code Playgroud)

让您的应用程序读取生成的输出 .csv。

如果您查看,iconv --help您会注意到-c表示丢弃,此外还有一些其他可能有用的丢弃选项。