我有一个excel文件,我正在使用xlrd模块在python中读取。我从每一行中提取值,添加一些额外的数据并将其全部写入新的文本文件。但是,我遇到了包含3/4分数文本的单元格的问题。 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)
是latin-1组。如果不需要,可以使用latin1解码char或替换为不同的char。
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'
答案 1 :(得分:0)
实际上最终工作的是解码字符串,然后对其进行编码,然后替换:
row_vals_str = [str(val).decode('latin1').encode('utf8').replace(r'\xbe', '3/4') for val in row_vals]