写入文件时出现Python unicode错误
我使用Python 2.7解析了一大堆网页,并从网页中获取内容,但网页中包含“”和“”等字符,它们都以某种方式转换为“Äô”。这给了我一个内容如下所示的文件(不包括引号):“我认为它很重要...”写入文件时出现Python unicode错误
使用print()
方法在终端中打印出的字符串很好,但我无法似乎使用print >> file, string
或file.write(string)
获得相同的效果。显然这是一个编码问题,但我没有找到解决方法。我打开这样的文件:file = codecs.open("file.txt","w+", encoding='utf-8')
,我使用BeautifulSoup4的getText()
方法为字符串赋值。有什么方法可以解决这个问题吗?
你可以尝试写出来的:
file.write(output_str.encode('utf-8', 'ignore'))
在你的代码的开头强制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()
这只意味着**源中的非ASCII代码**可以被正确解释。当你创建Unicode对象时,它确实有任何意义,你不是 –
一些源代码就已经不错了。
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
¤
因此,你应该通过BeautifulSoup解码的Unicode代替:
>>> print bs4("\xa4".decode("iso-8859-15"), "html.parser").text # ISO-8859-15
€
这意味着你的输入数据需要被解码cor rectly。用io.open(filename, "r", encoding="utf-8")
(或适当的编码)打开输入文件。
如果拉动远程网站,请检查“Content-type”标头或使用请求,它在响应对象的.text
属性中返回已解码的Unicode。
写入文件时,您有使用编解码器模块的正确思想。 io模块是更新的方式。
当你把所有这些放在一起时,你会写出正确编码的数据。
你能给我们提供该页面的链接吗? – alexanderlukanin13
由于缺乏可重复的代码,因此不适用。 http://*.com/help/how-to-ask –