写入文件时出现Python unicode错误
我正在使用Python 2.7解析一组网页并从中获取内容,但这些网页包含像和这样的字符,它们都以某种方式转换为“Ä”。这给了我一个包含如下内容的文件,不包括引号:我认为这很重要写入文件时出现Python unicode错误,python,string,file-io,unicode,encoding,Python,String,File Io,Unicode,Encoding,我正在使用Python 2.7解析一组网页并从中获取内容,但这些网页包含像和这样的字符,它们都以某种方式转换为“Ä”。这给了我一个包含如下内容的文件,不包括引号:我认为这很重要 使用print方法在终端中可以很好地打印字符串,但使用print>>file、string或file.writestring似乎无法获得相同的效果。显然这是一个编码问题,但我一直在寻找解决方法,但没有成功。我像这样打开文件:file=codecs.openfile.txt,w+,encoding='utf-8',我使用B
使用print方法在终端中可以很好地打印字符串,但使用print>>file、string或file.writestring似乎无法获得相同的效果。显然这是一个编码问题,但我一直在寻找解决方法,但没有成功。我像这样打开文件:file=codecs.openfile.txt,w+,encoding='utf-8',我使用BeautifulSoup4的getText方法为字符串赋值。有什么办法可以解决这个问题吗?你可以试着写出来:
file.write(output_str.encode('utf-8', 'ignore'))
尝试在函数的开头添加以下代码,这将解决您的问题
import sys
reload(sys)
sys.setdefaultencoding('utf8')
在代码开头强制执行utf8编码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
myfile = open('./myfile.txt', 'w')
myfile.write("I think it's important to be able to see all characters")
myfile.write("\nIt woùld be Ñìçè to see foreign letters as well")
myfile.write("\n")
myfile.close()
一些源代码可能会很好 BeautifulSoup通常能很好地猜测给定字符串的编码:
from bs4 import BeautifulSoup as bs4
>>> print bs4("\x80", "html.parser").text # Windows 1252
€
>>> print bs4("\xe2\x82\xac", "html.parser").text # UTF-8
€
除非它不能:
>>> print bs4("\xa4", "html.parser").text # ISO-8859-15
¤
因此,您应该将解码的Unicode传递给BeautifulSoup:
>>> print bs4("\xa4".decode("iso-8859-15"), "html.parser").text # ISO-8859-15
€
这意味着您的输入数据需要正确解码。使用io.openfilename,r,encoding=utf-8或适当的编码打开输入文件
如果拉取远程网站,请检查内容类型标头或使用请求,这将在响应对象的.text属性中返回解码的Unicode
在写入文件时,使用编解码器模块是正确的。io模块是实现这一点的较新方法
当您将所有这些内容放在一起时,您将写入正确编码的数据。您能给我们该页面的链接吗?由于缺少可复制的代码,请投反对票。这是一个令人讨厌的补丁。你会很快发现它掩盖了其他问题,因为你已经用大锤敲碎了一个坚果。这可能修复了你的输入或输出中没有定义编码的地方。这仅仅意味着你的源代码中的非ASCII码可以被正确解释。当您创建Unicode对象时,它真的有任何意义,而您不是