我正在清理法语的Europarl(http://data.statmt.org/wmt19/translation-task/fr-de/monolingual/europarl-v7.fr.gz)的单语语料库。.gz
文件中的原始数据(我使用wget
下载)。我想提取文本,看看它看起来如何,以便进一步处理语料库。你知道吗
使用下面的代码从gzip
中提取文本,我获得了类为bytes
的数据。你知道吗
with gzip.open(file_path, 'rb') as f_in:
print('type(f_in)=', type(f_in))
text = f_in.read()
print('type(text)=', type(text))
前几行的打印结果如下:
type(f_in) = class 'gzip.GzipFile'
type(text)= class 'bytes'
b'Reprise de la session\nJe d\xc3\xa9clare reprise la session du Parlement europ\xc3\xa9en qui avait \xc3\xa9t\xc3\xa9 interrompue le vendredi 17 d\xc3\xa9cembre dernier et je vous renouvelle tous mes vux en esp\xc3\xa9rant que vous avez pass\xc3\xa9 de bonnes vacances.\nComme vous avez pu le constater, le grand "bogue de l\'an 2000" ne s\'est pas produit.\n
我尝试用utf8
和ascii
对二进制数据进行解码,代码如下:
with gzip.open(file_path, 'rb') as f_in:
print('type(f_in)=', type(f_in))
text = f_in.read().decode('utf8')
print('type(text)=', type(text))
它返回如下错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 26: ordinal not in range(128)
我还尝试使用codecs
和unicodedata
包打开文件,但它也返回了编码错误。你知道吗
你能帮我解释一下我应该怎么做才能把法语文本变成正确的格式吗?你知道吗
Reprise de la session\nJe déclare reprise la session du Parlement européen qui avait été interrompue le vendredi 17 décembre dernier et je vous renouvelle tous mes vux en espérant que vous avez passé de bonnes vacances.\nComme vous avez pu le constater, le grand "bogue de l'an 2000" ne s'est pas produit.\n
非常感谢你的帮助!你知道吗
出现UnicodeEncodeError是因为在打印时,Python将字符串编码为字节,但在本例中,使用的编码(ASCII)没有与“\xe9”匹配的字符,因此引发了错误。你知道吗
设置PYTHONIOENCODING环境变量将强制Python使用不同的编码—环境变量的值。UTF-8编码可以对任何字符进行编码,因此这样调用程序可以解决以下问题:
假设代码是这样的:
环境变量可以通过其他方式设置-通过
export
语句、在.bashrc
、.profile
等中设置一个有趣的问题是为什么Python试图将输出编码为ASCII。我假设在*nix系统上,Python基本上是查看
$LANG
环境变量来确定要使用的编码。但是在这种情况下,$LANG
的值是fr_FR.UTF-8
,而Python使用ASCII作为输出编码。你知道吗通过查看
locale
模块的source和这个FAQ,按顺序检查这些环境变量:因此,可能是
LC_ALL
或LC_CTYPE
中的一个被设置为在您的环境中强制使用ASCII编码的值(您可以通过在终端中运行locale
命令进行检查;同时运行locale charmap
将告诉您编码本身)。你知道吗非常感谢你的帮助!我找到了一个简单的解决办法。我不知道为什么它能工作,但我想也许
.txt
格式在某种程度上是受支持的?如果你知道这个机制,了解它会非常有帮助。你知道吗当我在终端打印文本文件时,它看起来是这样的:
相关问题 更多 >
编程相关推荐