【发布时间】:2016-10-10 14:48:42
【问题描述】:
我正在尝试创建一个小程序来读取两个故事的内容,爱丽丝梦游仙境和白鲸记,然后计算每个故事中出现“the”这个词的次数。
但是,我在让 Geany 文本编辑器打开文件时遇到了问题。到目前为止,我一直在创建和使用自己的小文本文件,没有任何问题。
with open('alice_test.txt') as a_file:
contents = a_file.readlines()
print(contents)
我收到以下错误:
Traceback (most recent call last):
File "add_cats_dogs.py", line 50, in <module>
print(contents)
File "C:\Users\USER\AppData\Local\Programs\Python\Python35-32\lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2018' in position 279: character maps to <undefined>
正如我所说,任何小型自制文本文件都没有遇到任何问题。
奇怪的是,当我在 Python IDLE 中执行上述代码时,我没有任何问题,即使我将文本文件的编码从 UTF-8 更改为 ANSII。
我尝试将文本文件编码为 UTF-8 和 ANSII,我还检查以确保 Geany 的默认编码是 UTF-8(也尝试不使用默认编码),以及在打开时使用和不使用固定编码非 Unicode 文件。
我每次都遇到同样的错误。文本文件来自 gutenberg.org,我尝试使用那里的另一个文件并遇到了同样的问题。
我知道 Geany 和文本文件之间一定有某种问题,但我不知道是什么。
编辑:我找到了一种解决方法。 这是给我带来问题的文字:https://www.gutenberg.org/files/11/11-0.txt 这是我可以毫无问题地使用的文本:http://www.textfiles.com/etext/FICTION/alice13a.txt 上面的一个用 UTF-8 编码,下面的一个用 windows-1252 编码。我原以为反过来也是如此,但无论出于何种原因,UTF-8 编码似乎都会导致问题。
【问题讨论】:
-
我想你可以在那里找到解决方案stackoverflow.com/questions/14630288/…
-
实际上已经看过其中的一些,不幸的是我的 Python 技能非常基础,所以尝试实现他们的建议非常混乱,似乎没有帮助。
-
打开文件时没有错误,只是您的控制台使用的编码(cp437)无法编码该字符。您真的需要打印文本才能阅读文件和计算字数吗?
标签: python python-3.x encoding text-files geany