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

4 投票
2 回答
3035 浏览
提问于 2025-04-15 22:35

在一个文本文件(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标准库中自带的编码方式。

撰写回答