[英]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.