我有一个tsv文件,在某些行中,一个特定的列包含混合格式,例如:Hapoel_Be\u0027er_Sheva_A\u002eF\u002eC\u002e
,它应该是Hapoel_Be'er_Sheva_A.F.C.
。在
下面是我用来读取文件和拆分列的代码:
with open(path, 'rb') as f:
for line in f:
cols = line.decode('utf-8').split('\t')
text = cols[3].decode('unicode-escape') #Here is the column that has the above mentioned mixed format
错误消息:
^{pr2}$我想知道如何从第一个混合格式转换成另一个,同时阅读文件?我使用的是python2.7。在
非常感谢你
您可以使用
decode('unicode-escape')
将这些十六进制序列转换为字符。在编辑:根据您对问题的更新,您实际上有一个hex序列和Unicode字符的组合,超出了ASCII范围。错误来自于Python2.7尝试在Unicode字符串上使用
.decode()
时进行的自动转换-decode
只对字节字符串有效,因此它尝试使用ASCII
编解码器从Unicode转换。python3不允许这个错误。在要解决这个问题,您需要一个双重转换,一个将这些非ASCII字符转换为十六进制序列,另一个将它们转换回。
^{pr2}$'unicode-escape'
编解码器将使反斜杠加倍,因此也必须更正这些反斜杠。在可以使用
ast.literal_eval
将原始字节转换为unicode
^{pr2}$unicode_string
的输出:更新-在Python2.7中进行了测试,效果很不错
相关问题 更多 >
编程相关推荐