读取文件,输出UTF-8 / Unicode

时间:2014-07-12 03:43:20

标签: python python-2.7 unicode utf-8

我试图读取文件并比较字符。但是,当我用以下内容读取每一行后打印出来:

    with open('Q1.txt') as f:
        content = f.read().splitlines()

我得到' \ x80',' \ xe2',' \ x9d'等

这些是什么意思,我怎么能摆脱它们?

感谢。

2 个答案:

答案 0 :(得分:1)

open()内置函数不处理Python 2.x中的任何文本编码。多字节字符以原始十六进制形式出现。您可以使用io模块来获得更强大的open函数,该函数提供用于定义编码的参数:

import io
with io.open(fname, 'r', encoding='utf-8') as f:
  ...

方便地,这适用于python 2.6+和3.x,因此如果代码稍后移植到py3k,您将不会遇到神秘的编码问题。顺便说一下,3.x内置的open实际上是io.open的别名。 2.6+中的后移版本具有完全相同的功能。 io模块旨在取代codecs模块并具有一些内部改进,因此最好在新代码中使用其open

答案 1 :(得分:1)

从Unicode操作方法文档:https://docs.python.org/2/howto/unicode.html

import codecs
f = codecs.open('Q1.txt', encoding='utf-8')
for line in f:
    print(repr(line))

在Python 3中,只需将内置open与上下文管理器一起使用:

with open('Q1.txt', encoding='utf-8') as f:
    for line in f:
        print(f)