Python文件输入字符串:如何处理转义的Unicode字符?
在一个文本文件(test.txt)中,我的字符串看起来是这样的:
Gro\u00DFbritannien
读取这个字符串时,python会把反斜杠转义掉:
>>> file = open('test.txt', 'r')
>>> input = file.readline()
>>> input
'Gro\\u00DFbritannien'
我该如何将其解释为unicode呢?decode()
和unicode()
都无法解决这个问题。
以下代码会把Gro\u00DFbritannien
写回文件,但我想要的是Großbritannien
>>> input.decode('latin-1')
u'Gro\\u00DFbritannien'
>>> out = codecs.open('out.txt', 'w', 'utf-8')
>>> out.write(input)
2 个回答
4
使用内置的'unicode_escape'编码:
>>> file = open('test.txt', 'r')
>>> input = file.readline()
>>> input
'Gro\\u00DFbritannien\n'
>>> input.decode('unicode_escape')
u'Gro\xdfbritannien\n'
你也可以使用 codecs.open()
:
>>> import codecs
>>> file = codecs.open('test.txt', 'r', 'unicode_escape')
>>> input = file.readline()
>>> input
u'Gro\xdfbritannien\n'
标准编码的列表可以在Python文档中找到:http://docs.python.org/library/codecs.html#standard-encodings
9
你想使用 unicode_escape
编码:
>>> x = 'Gro\\u00DFbritannien'
>>> y = unicode(x, 'unicode_escape')
>>> print y
Großbritannien
可以查看 这个文档,里面有很多Python标准库中自带的编码方式。