字符串中的奇怪字符

时间:2014-05-28 18:23:16

标签: python

我正在从文件中读取一些数据..

但我观察到的有一些奇怪的角色;

'tamb\xc3\xa9m', 'f\xc3\xbcr','cari\xc3\xb1o'

我的文件读取代码非常标准:

 with open(filename) as f:
    for line in f:
        print line

1 个答案:

答案 0 :(得分:8)

您拥有UTF-8编码数据。您可以解码数据:

with open(filename) as f:
   for line in f:
       print line.decode('utf8')

或使用io.open()让Python为您解码内容,如下所示:

import io

with io.open(filename, encoding='utf8') as f:
   for line in f:
       print line

您的数据已解码:

>>> print 'tamb\xc3\xa9m'.decode('utf8')
também
>>> print 'f\xc3\xbcr'.decode('utf8')
für
>>> print 'cari\xc3\xb1o'.decode('utf8')
cariño

您似乎打印了字符串表示,(repr()函数的输出),它生成适合粘贴回Python解释器的字符串文字语法。 \xhh十六进制代码用于可打印ASCII范围之外的字符。 listdict等Python容器在打印时也会使用repr()来显示其内容。

您可能希望了解Unicode以及它与Python的交互方式。参见: