2016-10-10 5 views
1

私は不思議の国のアリスの不思議の国のアリス& Moby Dickという2つのストーリーの内容を読み込み、それぞれに 'the'という単語が何回見つかったのかを数えますストーリー。テキストファイルを開く際にユニコードエラーが発生する - 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で上記のコードをexcecuteすると、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

どのようなOSをお使いですか? Windowsにも同様の問題があります。その場合は、コンソールでコマンドを実行する前にchcp 65001を実行してみてください。また、あなたの上部に# encoding: utf-8を追加することができます.pyファイル。私のマシン上のgutenberg.orgの.txtファイルと同じエンコーディングの問題に返信できないので、これが役に立ちます。

+0

私はWindowsを使用しています。ごめんなさい。残念ながら、これらのオプションのどちらも機能しません。私が誤解していない限り、.pyファイルを実行する前にコンソール上で何かを実行すべきかを明確にすることができたら? – Cyanidies

+0

Windowsコンソールで 'chcp 65001'を使ってコードページを切り替えることができます。 chcpは、コードページを変更するためのWindowsのコマンドラインコマンドです。 – Warager

+0

printコマンドにencode ignore式を追加することもできます。 'print(contents.encode( 'cp437'、 'ignore'))' – Warager

関連する問題