gpt4 book ai didi

python - UnicodeEncodeError : 'ascii' codec can't encode character u'\xa3'

转载 作者:IT老高 更新时间:2023-10-28 20:31:32 31 4
gpt4 key购买 nike

我正在阅读一个 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') 它将停止抛出错误,但不幸的是,当我将数据写入其他地方(如 latin-1)时,£ 符号都变成了乱码。

如何解决此问题并正确读取 £ 符号?

--- 更新 ---

一些善良的读者建议我根本不需要解码它,或者我可以在需要时将它编码为 Latin-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 行,我也会收到相同的错误。

最佳答案

解决 csvwriter 的所有“'ascii'编解码器无法编码字符......”问题的一个非常简单的方法是改用 unicodecsv ,是 csvwriter 的直接替代品。

用 pip 安装 unicodecsv 然后你就可以用完全相同的方式使用它了,例如:

import unicodecsv
file = open('users.csv', 'w')
w = unicodecsv.writer(file)
for user in User.objects.all().values_list('first_name', 'last_name', 'email', 'last_login'):
w.writerow(user)

关于python - UnicodeEncodeError : 'ascii' codec can't encode character u'\xa3',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588083/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com