无法在Python中解码Cyrillic字符串

3

我有一个编码文件,其中的字符串类似于

b'1'    b'\xca\xee\xef\xe5\xe9\xf1\xea' b'1'    b'ADMIN'    b'2013-07-08 00:21:55'  
b'2'    b'\xd7\xe5\xeb\xff\xe1\xe8\xed\xf1\xea' b'1'    b'ADMIN'    b'2013-07-08 00:22:05'  

我该如何解码它呢?我尝试使用codecs、decode/encode cp1251,但没成功。
file -bi 告诉我字符集是us-ascii。
实际上这应该是一个用cyrillic(cp1251)编码的字符串。
Python 2.7
输出结果:
>>> w=r'\xd7\xe5\xe\xff\xe1\xe8\xed\xf1\xea'
>>> w='\xd7\xe5\xe\xff\xe1\xe8\xed\xf1\xea'
ValueError: invalid \x escape
>>> w=r'\xd7\xe5\xe\xff\xe1\xe8\xed\xf1\xea'
>>> w.decode('raw_unicode_escape')
u'\\xd7\\xe5\\xe\\xff\\xe1\\xe8\\xed\\xf1\\xea'
>>> w.decode('utf-8')
u'\\xd7\\xe5\\xe\\xff\\xe1\\xe8\\xed\\xf1\\xea'
>>> unicode(w)
u'\\xd7\\xe5\\xe\\xff\\xe1\\xe8\\xed\\xf1\\xea'
>>> unicode(w, 'utf-8')
u'\\xd7\\xe5\\xe\\xff\\xe1\\xe8\\xed\\xf1\\xea'

我尝试了各种方法:使用decode("utf-8"),使用unicode等,但是仍然无法改变结果。每次我都得到相同的一组字节。

"它没有起作用" - 发生了什么?你得到了什么结果?疯狂的文本?编码错误?还是其他什么问题? - user2357112
我得到了同样的字符串,它根本不改变,我甚至无法获取以\u开头的Unicode字符。 - Ivri
这没有意义。向我们展示发生了什么-复制粘贴一个解释器的记录让我们看到。 - user2357112
以前我处理编码(cyr<->utf)时没问题,但现在卡住了;已解决。 - Ivri
1个回答

5
问题是你的变量 w 中第三个 \x 转义后面缺少了一个 b,导致出现了无效转义的错误。
>>> w = '\xd7\xe5\xeb\xff\xe1\xe8\xed\xf1\xea'
>>> w.decode('cp1251')
u'\u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a'

3
谢谢!这个可以运行:print w.decode('cp1251').encode('utf-8')。=> Челябинск - Ivri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接