2012-04-26 131 views
1

我對EXEL解析使用python工作。
到現在爲止我已經使用英語,但是當我遇到地區語言時,我收到了錯誤。解析區域字符串語言

例如:

IR05 měsíční (monthly) 

它給我的錯誤作爲

UnicodeEncodeError: 'ascii' codec can't encode character u'\u011b' in position 6: ordinal not in range(128) 

我怎麼能解析它,我可以在輸出文件相同的語言寫一遍?

我的代碼:

for j in val: 
    print 'j is - ', j 
    str(j).replace("'", "") 

我得到錯誤的REPLACE語句。

+1

請告訴我們您寫道,生成的代碼那個錯誤。 – 2012-04-26 10:18:28

+0

編輯的問題 – sam 2012-04-26 10:21:06

回答

4
>>> "IR05 měsíční (monthly)".decode('utf8') 
u'IR05 m\u011bs\xed\u010dn\xed (monthly)' 

這是你原始的字符串(這是用utf8編碼)的Unicode版本。

現在,你可以把它比作你的其他字符串(從文件),您解碼(從UTF8或拉丁文2或不同的格式),你可以對它們進行比較。再次

>>> s_utf8 = "IR05 měsíční (monthly)" 
>>> s_latin2 = 'IR05 m\xecs\xed\xe8n\xed (monthly)' 
>>> s_utf8.decode('utf8') == s_latin2.decode('latin2') 
True 

要寫入字符串到一個文件中,encode它:

>>> 'IR05 m\xecs\xed\xe8n\xed (monthly)'.decode('latin2') 
u'IR05 m\u011bs\xed\u010dn\xed (monthly)' 

現在你可以比較兩個Unicode字符串

>>> s = s_utf8.decode('utf8') 

>>> filehandle.write(s.encode('utf8')) 
+0

其實我想比較「IR05měsíční(月刊)」,在該「IR05měsíční(月刊)」被寫入另一個文件。當我將它解碼時,它會給我另一種格式。 我怎麼會在格式和如果匹配檢查,然後我要創建一個文件,「IR05měsíční(月刊)」,在該文件 – sam 2012-04-26 10:55:15

+0

感謝漂亮的答案寫。你能再告訴我一件事嗎?如果我已經解碼了這個陳述,現在我又想把這個「IR05měsíční(每月)」寫入一個文件中。我該怎麼寫呢? – sam 2012-04-26 11:09:57

+0

啊哈所以它會再次寫「IR05měsíční(月刊)」文件,而不是作爲「IR05米\ u011bs \固定的\ u010dn \固定的(每月)」 – sam 2012-04-26 11:18:55

2

的錯誤可能是由STR(J)引起的, 試試這個:

for j in val: 
    print 'j is - ', j 
    j.replace("'", "") 
+0

'j.replace( 「」「, 」「)''返回到j' ...必殺技的更新版本。 – eumiro 2012-04-26 10:55:05