【问题标题】:Open a text file with accents in python在 python 中打开带有重音符号的文本文件
【发布时间】:2014-12-21 18:10:07
【问题描述】:

我尝试用 Python 2.7 打开一个法语文本文件。我用了命令

f=open('textfr','r')

但是当我使用时

f.read()

我失去了重音字符:我得到u"J'\xc3\xa9tais \xc3\xa0 Paris 而不是J'étais à Paris 等。

在linux终端时,我会这样做

file -i textfr 

我明白了

charset=utf-8

所以我不明白...

【问题讨论】:

  • 你试过 print f.read() 吗?

标签: python utf-8


【解决方案1】:

您需要指定字符集。

f = io.open('textfr', 'r', encoding='utf-8')

【讨论】:

  • 是的,确实如此。根据定义,它必须。
  • @Mustafa:当你说“我得到J'\xc3\xa9tais \xc3\xa0 Paris”时,你是通过对终端使用print 语句来“得到”它,还是在交互中评估变量的内容Python 会话?如果您使用的是终端,它是如何配置的? (对于 *nix 风格的主机,你的 TERM env var 设置是什么)
  • 我在 spyder IDE 中输入 f.read() 或者在从 ubuntu 14.04 终端启动的 python ide 中得到它
  • 什么是'r'?
【解决方案2】:

默认情况下,使用系统默认文本编码读取/写入文件,可以找到 在sys.getdefaultencoding() 。在大多数机器上,它设置为 utf-8 。但是像你这样的一些机器不使用utf-8你可以为你的文件使用正确的编码,或者使用utf-8这是一个通用编码:

在 python 3 中:

with open('somefile.txt', 'rt', encoding='utf-8') as f:
         #do stuff

在 python 2 中你可以使用codecs.open():

import codecs
f=codecs.open ('somefile.txt', 'rt', encoding='utf-8').read()

【讨论】:

  • open() in 2.x 没有 encoding 参数。
  • @IgnacioVazquez-Abrams 哦,是的,我会添加这个来回答
【解决方案3】:

使用codecs 而不是标准的open 所以

import codecs
codecs.open('textfr','r', 'utf-8')  

【讨论】:

  • 谢谢,但它不起作用......所以问题可能出在其他地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多