【发布时间】:2019-10-15 17:23:49
【问题描述】:
我正在编写一个基本的 MapReduce 程序,其中输入文件是纯文本,基本上程序会计算一个单词在输入中出现的次数,并且必须输出另一个如下所示的纯文本文件:
第一个单词 4
第二个字 10
第三个字2
等,其中 (number)word 是出现在输入中的单词,除此之外的数字是它在文件中出现的次数。
我有代码并且它正在工作,但如果我的输入文本文件有特殊字符(á、é、ì、ö、û、ñ 等),输出文件将显示如下:
(例如,如果第一个单词是 fábrica,并且出现了 6 次):
fã¡brica 6
我该如何解决这个问题?谢谢!
【问题讨论】:
-
欢迎来到 Stack Overflow!请拨打tour。如果您对所有内容都使用标准 Python 3 工具和 UTF-8 编码,那么您不应该遇到这样的问题 (mojibake)。您需要为问题创建一个minimal reproducible example 和edit 以将其添加到问题中。
-
关键是您的代码使用与未来消费者预期相同的字符编码写入文件。抛开案例不谈,看起来您正在将
á(\xc3 \xa1) 的 UTF-8 编码写入文件,但查看文件时好像它是 ISO-8859 编码的(因为\xc3对应于 @987654327 @ 和\xa1到¡)。 -
换句话说,问题可能不在于写入文件的代码,而在于您之后查看文件的方式。
标签: python python-3.x output special-characters