[英]How can I encode/decode \xbe in python?
我有一个使用xlrd模块在python中读取的excel文件。 我正在从每一行提取值,添加一些其他数据并将其全部写到新的文本文件中。 但是,我遇到了包含分数为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分数时,我都会得到相同的错误。
如何将其转换为可以写入文本的内容?
我遇到了这个线程,但没有找到答案: 如何在Python中将\\ xXY编码的字符转换为UTF-8?
是拉丁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'
实际工作的最终结果是解码字符串,然后对其进行编码,然后替换:
row_vals_str = [str(val).decode('latin1').encode('utf8').replace(r'\xbe', '3/4') for val in row_vals]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.