2012-09-24 13 views
1

我有比較字符串與我在程序中輸入字符串的問題,我應該得到他們是平等的,但不管如果我使用解碼('utf-8')我得到他們是不平等的。下面的代碼:python編碼

final = open("info", 'r') 
exported = open("final",'w') 
lines = final.readlines() 
for line in lines: 
    if line == "Wykształcenie i praca": #error 
    print "ok" 

,我如何保存我嘗試讀文件:

comm_p = bs4.BeautifulSoup(comm) 
comm_f.write(comm_p.prettify().encode('utf-8')) 

for string in comm_p.strings: 
     #print repr(string).encode('utf-8') 
     save = string.encode('utf-8') # there is how i save 
     info.write(save) 
     info.write("\n")   

info.close() 

,並在文件的頂部,我有# - - 編碼:UTF-8 - -

任何想法?

+1

加上'打印 「%R%R」 %(行, 「我Wykształcenie普拉查」) 「就在比較線之前,告訴我們它說的是什麼 – georg

回答

3

這應該做你所需要的:

# -- coding: utf-8 -- 
import io 

with io.open('info', encoding='utf-8') as final: 
    lines = final.readlines() 

for line in lines: 
    if line.strip() == u"Wykształcenie i praca": #error 
     print "ok" 

您需要打開右側的文件編碼,並且由於您的字符串不是ascii,所以您應該將其標記爲unicode。

0

首先,你需要一些關於編碼的基本知識。 This is a good place to start。您現在不必閱讀所有內容,但儘可能地嘗試儘可能。

關於當前的問題:

你正在閱讀一個UTF-8編碼的文件(可能),但你讀它作爲一個ASCII文件。 open()不會爲您做任何轉換。

所以,你需要做的(至少)什麼:

  • 使用codecs.open("info", "r", encoding="utf-8")讀取文件
  • 使用Unicode字符串進行比較:if line.rstrip() == u"Wykształcenie i praca":
+0

我想你是說你不是r」「,對嗎Tim? –

+0

@BurhanKhalid:哎呀。當然。 –

0

使用Unicode字符串對比

>>> s = u'Wykształcenie i praca' 
>>> s == u'Wykształcenie i praca' 
True 
>>> 

,當涉及到字符串unicode是最明智的:)