2016-10-10 60 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

相關問題