2016-11-14 58 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]