Python文件输入字符串:如何处理转义的unicode字符?

时间:2010-05-11 13:44:19

标签: python unicode utf-8 decode

在文本文件(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 个答案:

答案 0 :(得分:8)

您想使用unicode_escape编解码器:

>>> x = 'Gro\\u00DFbritannien'
>>> y = unicode(x, 'unicode_escape')
>>> print y
Großbritannien

请参阅the docs,了解作为Python标准库的一部分的大量标准编码。

答案 1 :(得分: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