gpt4 book ai didi

python - 统一码编码错误 : 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

转载 作者:太空狗 更新时间:2023-10-30 01:14:59 24 4
gpt4 key购买 nike

我不知道这个错误的确切来源是什么以及如何修复它。我通过运行 this code 得到它.

 Traceback (most recent call last):
File "t1.py", line 86, in <module>
write_results(results)
File "t1.py", line 34, in write_results
dw.writerows(results)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.py", line 154, in writerows
return self.writer.writerows(rows)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

非常感谢任何解释!

我更改了代码,现在出现此错误:

 File "t1.py", line 88, in <module>
write_results(results)
File "t1.py", line 35, in write_results
dw.writerows(results)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.py", line 154, in writerows
return self.writer.writerows(rows)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

这里是变化:

 with codecs.open('results.csv', 'wb', 'utf-8') as f:
dw = csv.DictWriter(f, fieldnames=fields, delimiter='|')
dw.writer.writerow(dw.fieldnames)
dw.writerows(results)

最佳答案

错误是由这部分代码引发的:

with open('results.csv', 'w') as f:
dw = csv.DictWriter(f, fieldnames=fields, delimiter='|')
dw.writer.writerow(dw.fieldnames)
dw.writerows(results)

您正在打开一个 ASCII 文件,然后尝试向其中写入非 ASCII 数据。我猜想编写该脚本的人在测试期间碰巧从未遇到过非 ASCII 字符,因此他从未遇到过错误。

但是如果您查看 csv module 的文档,您会看到该模块无法正确处理 Unicode 字符串(这是 Beautiful Soup 返回的内容),CSV 文件始终必须以二进制模式打开,并且只有 UTF-8 或 ASCII 可以安全写入。

因此在写入之前需要将所有字符串编码为UTF-8。我首先认为在写入时对字符串进行编码就足够了,但是 Python 2 csv 模块无论如何都会阻塞 Unicode 字符串。所以我想除了显式编码每个字符串之外别无他法:

parse_results() 中,更改行

results.append({'url': url, 'create_date': create_date, 'title': title})

results.append({'url': url, 'create_date': create_date, 'title': title.encode("utf-8")})

这可能已经足够了,因为我不希望 URL 或日期包含非 ASCII 字符。

关于python - 统一码编码错误 : 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25697459/

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