我有一个Excel电子表格,其中包含一些英镑符号。
当我尝试使用xlrd模块读取它时,我会收到以下错误:
x = table.cell_value(row, col)
x = x.decode("ISO-8859-1")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 0: ordinal not in range(128)
如果我将其重写为 x.encode('utf-8'),它就不会再抛出错误了,但不幸的是,当我将数据写到其他地方(作为拉丁语-1)时,所有的英镑符号都变成了乱码。
我该如何修复这个问题,正确读取英镑符号?
--- 更新 ---
一些好心的读者建议我根本不需要解码它,或者只在需要时将其编码为拉丁语-1。但问题是,我最终需要将数据写入CSV文件,而它似乎不接受原始字符串。
如果我根本不编码或解码数据,则会出现以下情况(在将字符串添加到名为items的数组后):
for item in items:
#item = [x.encode('latin-1') for x in item]
cleancsv.writerow(item)
File "clean_up_barnet.py", line 104, in <module>
cleancsv.writerow(item)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2022' in position 43: ordinal not in range(128)
即使我取消注释 Latin-1 行,仍然会出现相同的错误。