保存数据时
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)
有帮助吗?
目前尚不清楚您的 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表示丢弃,此外还有一些其他可能有用的丢弃选项。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |