繁体   English   中英

从 csv 读取时,UTF-16 解码失败

[英]UTF-16 decoding fails when reading from csv

尝试读取包含一些 UTF-16 字符串的 csv。 当我打印从 csv 中提取的这些字符串时,它们不会按应解码的方式解码为西里尔文/日文/任何内容,而只是打印编码的 utf-16。 然而,当我复制/粘贴字符串并直接打印它们时,没有问题。

data = pd.read_csv('stuff.csv')
for index,row in data.iterrows():
    print('\u0423\u043a\u0440\u0430\u0438\u043d\u0430')
    print(row[1]) 

输出:

Украина
\u0423\u043a\u0440\u0430\u0438\u043d\u0430

我错过了什么? 请注意,某些 CSV 是 ascii,因此我不能将 csv 的编码设置为 utf-16。

编辑:我正在尝试有条件地解码检测到 utf-16 的字符串。 尝试了从 csv 获取的字符串和复制/粘贴的字符串:

print(bytearray(row[1].encode()).decode('utf-16'))
print(b'\u0423\u043a\u0440\u0430\u0438\u043d\u0430'.decode('utf-16'))

由于某种原因,它解码为中文字符:

畜㐰㌲畜㐰愳畜㐰〴畜㐰〳畜㐰㠳畜㐰搳畜㐰〳
畜㐰㌲畜㐰愳畜㐰〴畜㐰〳畜㐰㠳畜㐰搳畜㐰〳

pandas.read_csv有一个encoding参数。

试试data = pd.read_csv('stuff.csv', encoding='utf-16')

假设您实际上在文件中有\\u\u003c/code>转义,您可以使用 Python ast模块来访问解释器的实际解析器:

from ast import literal_eval
...
    print(literal_eval('"'+row[1]+'"'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM