Ror*_*ory 17 python unicode beautifulsoup
我正在尝试将一些字符串写入文件(字符串已由HTML解析器BeautifulSoup提供给我).
我可以使用"print"来显示它们,但是当我使用file.write()时,我收到以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 6: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我怎么解析这个?
Kar*_*tel 18
是的,大约99.9%的资深Python用户以前见过它.
如果我在Google中输入'python unicode',我会得到大约1400万个结果; 第一个是http://docs.python.org/howto/unicode.html官方文件,描述了令人难以忍受的细节的整个情况; 第四个是http://farmdev.com/talks/unicode/这是一个更实用的概述,几乎可以为你提供答案,并确保你了解正在发生的事情.
你确实需要阅读和理解这些概述,不管它们看起来多久.真的没有任何解决方法.文字很难.没有"纯文本"这样的东西,多年来没有合理的传真,而且从来没有真正存在过,尽管我们花费了数十年的时间假装有.但Unicode至少是一个标准.
您还应该阅读http://www.joelonsoftware.com/articles/Unicode.html.
yos*_*ssi 14
将包含非英语字符(Unicode字符超过128)的Unicode字符串传递给需要ASCII字节字符串的字符串时,会发生此错误.Python字节串的默认编码是ASCII,"它可以处理128个(英文)字符".这就是为什么尝试将Unicode字符转换为128以上会产生错误的原因.
unicode()
unicode(string[, encoding, errors])
Run Code Online (Sandbox Code Playgroud)
构造函数具有签名unicode(string [,encoding,errors]).它的所有参数都应该是8位字符串.
第一个参数使用指定的编码转换为Unicode; 如果省略编码参数,则ASCII编码用于转换,因此大于127的字符将被视为错误
例如
s = u'La Pe\xf1a'
print s.encode('latin-1')
Run Code Online (Sandbox Code Playgroud)
要么
write(s.encode('latin-1'))
Run Code Online (Sandbox Code Playgroud)
将使用latin-1进行编码
小智 2
我试过这个效果很好
with open(r"C:\rag\sampleoutput.txt", 'w', encoding="utf-8") as f:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15224 次 |
| 最近记录: |