首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取文件,输出UTF-8/Unicode

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

Stack Overflow用户
提问于 2014-07-12 11:43:20
回答 2查看 340关注 0票数 2

我正在试着读取一个文件并比较字符。但是,当我用以下命令读取每一行后打印输出:

代码语言:javascript
运行
复制
    with open('Q1.txt') as f:
        content = f.read().splitlines()

我得到了'\x80‘、'\xe2’、'\x9d‘等。

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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-07-12 11:53:42

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

代码语言:javascript
运行
复制
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

票数 2
EN

Stack Overflow用户

发布于 2014-07-12 11:59:03

来自Unicode How-to文档:https://docs.python.org/2/howto/unicode.html

代码语言:javascript
运行
复制
import codecs
f = codecs.open('Q1.txt', encoding='utf-8')
for line in f:
    print(repr(line))

在Python3中,只需使用带有上下文管理器的内置open

代码语言:javascript
运行
复制
with open('Q1.txt', encoding='utf-8') as f:
    for line in f:
        print(f)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24709427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档