2016-10-10 59 views
1

我正在尝试创建一个小程序,读取两个故事的内容,Alice in Wonderland & Moby Dick,然后计算每个单词中找到“the”的次数故事。打开文本文件时出现Unicode错误 - Geany

但是,我得到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编码似乎是造成这个问题的原因。

+0

我认为你可以找到解决方案http://stackoverflow.com/questions/14630288/unicodeencodeerror-charmap-codec-cant-encode-character-maps-to-undefined – Warager

+0

其实已经看过一些这些,不幸的是,我的Python技能是非常基本的,所以试图实现他们的建议是非常混乱,似乎没有帮助。 – Cyanidies

+0

打开文件时没有错误,只是由控制台(cp437)使用的编码无法编码该字符。你是否真的需要打印文本以读取文件和计算单词? – Goyo

回答

0

你使用什么操作系统? Windows中也有类似的问题。如果是这样,则可以在控制台中执行命令之前尝试运行chcp 65001。您也可以在您的顶部.py文件中添加# encoding: utf-8。希望这会有所帮助,因为我无法在我的机器上从gutenberg.org回复与.txt文件相同的编码问题。

+0

我使用Windows,抱歉应该指定。不幸的是这些选项都不起作用。除非我误解,否则如果你能够在执行.py文件之前澄清如何在控制台上运行某些东西? – Cyanidies

+0

您可以尝试在Windows控制台中使用'chcp 65001'来切换您的代码页; chcp是用于更改代码页的Windows命令行命令。 – Warager

+0

您也可以将编码忽略表达式添加到您的打印命令中。 'print(contents.encode('cp437','ignore'))' – Warager

相关问题