我正在尝试将网络抓取的结果写入 html 文件。我正在使用 Beautiful Soup 从网页中抓取链接和文本。然后,当我创建文件并写入文件时,出现以下错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 939-940: ordinal not in range(128)
写入文件的行如下所示:
file_object.write(file_content)
当我改为这样做时:
file_object.write(file_content.encode('utf-8'))
我没有收到错误,但它无法打印特殊字符,例如 å 或 ä。
我意识到这是某种编码错误,但我不明白如何解决它。项目整体is located here ,第 81 行,因为我在提取可运行和逻辑子部分时遇到了问题。
我使用的是 Mac,但在 PC 上运行相同的脚本时遇到了类似的问题。使用 python 2.7
最佳答案
是的,使用 codecs 模块中的 open(),或者,在 Python 3 中,正常(内置)open() 如下所示:
f = open(path, "wt", encoding="UTF-8")
但是,如果您不想过多更改代码,则不需要任何特殊的东西。 诀窍是在文件的开头添加正确的 BOM(字节顺序标记),以便打开它的编辑器知道它是一个 UTF-8 文件,并且应该这样对待。
Change you should make:
file_object.write('\xef\xbb\xbf'+file_content.encode('utf-8'))
关于python - 在 python 中写入文件会出现 ascii 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31231615/