2016-11-14 165 views
0

我有一個Excel文件,我正在閱讀python使用xlrd模塊。我從每一行中提取值,添加一些額外的數據並將其全部寫入到一個新的文本文件中。不過,我遇到了包含3/4分數文本的單元格的問題。 Python的讀取值\ XBE,每個我遇到它的時候,我得到這個錯誤:如何在python中編碼/解碼xbe?

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

我將我的價值觀的名單從各行成一個字符串,嘗試沒有成功如下:

row_vals_str = [unicode(str(val), 'utf-8') for val in row_vals] 
row_vals_str = [str(val).encode('utf-8') for val in row_vals] 
row_vals_str = [str(val).decode() for val in row_vals] 

每次我碰到3/4分數的第一次出現時,我都會得到相同的錯誤。

如何將其轉換爲可以寫入文本的內容?

我碰到這個線程,但沒有找到答案:How to convert \xXY encoded characters to UTF-8 in Python?

+0

它可能與拉美相當於1編碼。但是,你仍然必須對角色做一些有用的事情。 – jszakmeister

+0

如果你有Unicode問題,最好使用Python 3. –

+0

謝謝你的回覆,@NickT我很遺憾現在用python 2.7卡住 – kflaw

回答

1

這是Latin-1的組。如果你不需要它,你可以使用latin1來解碼字符或替換爲不同的字符。

http://www.codetable.net/hex/be

>>> '\xbe'.decode('latin1') 
u'\xbe' 
>>> '\xbe'.decode('cp1252') 
u'\xbe' 


>>> '\xbe this is a test'.replace('\xbe','3/4') 
'3/4 this is a test' 
+0

謝謝你的回覆!我嘗試了你的第一個和第三個選項,仍然有同樣的錯誤?儘管在第一種情況下我將它應用於包含\ xbe的整個字符串。 – kflaw

+0

@kflaw如果第一次解碼工作,您可以先解碼,然後將'xbe'替換爲'3/4' – galaxyan

+0

無法使其工作 – kflaw

0

實際上結束了什麼工作是字符串解碼,然後對其進行編碼,然後更換:

row_vals_str = [str(val).decode('latin1').encode('utf8').replace(r'\xbe', '3/4') for val in row_vals]