2017-01-16 128 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') 

之後,我有一個函數,該列表和其他參數,並檢查該列表中包含這樣的說法。但是,如果該參數可喜歡它doen't工作Ö特殊字符,因爲當文件被讀蟒蛇保存它想:ö

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' 

我試圖將其轉換與UTF-8,但似乎沒有幫助。有沒有人有辦法解決嗎?

+0

嘗試使用iso-8859-1編碼 – Chedy2149

+0

您的Python文件和您的文本文件是否都使用UTF-8編碼? – Guillaume

+0

python文件編碼爲# - \ * - 編碼:utf-8 - \ * - 和文本文件編碼爲utf-8 –

回答

0

的解決方案是與open(path,’r’,encodeing=’utf-8’) 更換open(path,’r’,)如果添加去encodeing參數蟒蛇將確保日的文件中讀取UTF-8,所以當你比較字符串他們是真正的相同。

1

發生這種情況是因爲您使用的是Python 2,可能在Windows上,而您的文件使用utf-8編碼,而不是拉丁文-1。

你做的最好的東西,而不是試圖隨機修復它(包括與你的問題的第一個評論:他們都是隨機的建議),是要了解發生了什麼。所以,停止你想做的事情。自動應處理大多數問題 - 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,如果你可以:

閱讀本。

如果您不能正確處理文本解碼和手動重新編碼 - 這些概念位於上面的鏈接上。假設你的輸入文件爲UTF-8

+0

我正在使用python 3.5編譯器。我完全理解發生了什麼。我在這裏恢復並不是因爲我不知道發生了什麼,我不知道我應該怎樣處理這個問題。 –