2017-01-16 11 views
1

ノーベル賞について多くのエントリがあるファイルがあります。私はこのようなリストにそのファイルを変換するよりも:その後Pythonの特殊文字

file = open(path, 'r') 
file.readline() 
content = [] 
for line in file: 
    line = line.replace('\n', '') 
    content.append(line.split(';')) 

content = check(content, 'röntgen') 

を私はリストがその引数が含まれている場合は、そのリストや他の引数とチェックを取る機能があります。 ö

def check(content, attr): 
reducedList = [] 
for i in range(len(content)): 
    curr = content[i][4] 
    if curr.find(attr) != -1: 
     reducedList.append(content[i]) 
return reducedList 

をして:

curr = 'voor hun verdiensten op het gebied van de analyse van de kristalstructuur door middel van röntgenstraling' 
attr = 'röntgen' 

私はそれを変換しようとしたファイルが読み込まれたときので、引数が、それは仕事をdoen'tÖなどの特殊文字を取る場合はPythonはそれが好きセーブutf-8でもそれは助けにならないようです。誰にも解決策がありますか?

+0

iso-8859-1エンコーディングを試してください – Chedy2149

+0

あなたのpythonファイルとテキストファイルの両方がUTF-8でエンコードされていますか? – Guillaume

+0

pythonファイルは# - \ * - coding:utf-8 - \ * - でエンコードされ、テキストファイルはutf-8でエンコードされます –

答えて

0

であると仮定します。文字列を比較するとき、デファイルはUTF-8に読まれることを確認しますので、彼らは本当にあります同じ。

1

これは、おそらくWindowsでPython 2を使用しており、ファイルがlatin-1ではなくutf-8でエンコードされているために発生します。

無作為に修正しようとするのではなく(あなたの質問に最初のコメントを含める:それらはすべてランダムな提案です)、何が起こっているのかを理解することです。だから、あなたがしようとしていることをやめてください。

この読む、その後 https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/

をあなたができるかどうかのpython3に切り替える - それは自動的にほとんどの問題を処理する必要があります。

テキストのデコードと再エンコードを手作業で行う必要がない場合は、上記のリンクに概念があります。入力ファイルは、ソリューションを使用すると、パラメータのpythonをencodeingデ追加する場合open(path,’r’,encodeing=’utf-8’)open(path,’r’,)を交換することで、UTF-8

+0

私はpython 3.5コンパイラを使用しています。私は何が起こっているかを完全に理解しています。私は何が起こっているのか分からなかったからではなく、私がこの問題をどうしたらいいのか分からなかったからではない。 –