我在用 python 下载某个网页里的资料,获取的某一个 str 里面有些字符能正常 print 但是无法写入文件里,报错。
UnicodeEncodeError: 'gbk' codec can't encode character '\xf6' in position 308: illegal multibyte sequence
不知道应该如何解决?
写代码检查这个错误时,代码是这样的:
c = open('a2','w')
print('\xf6')
c.write('\xf6')
c.close()
源文件局部是这样的:
import urllib.request
from bs4 import BeautifulSoup
c = open('c1','w')
d = urllib.request.urlopen('http://www.efloras.org/florataxon.aspx?flora_id=3&taxon_id=200012756')
e = BeautifulSoup(d.read().decode(encoding="utf-8"),"lxml")
c.write(e.find(attrs={'id': 'lblTaxonDesc'}).get_text())
if e.find(attrs={'title': 'Illustration'}):
c.write(str(e.find(attrs={'title': 'Illustration'})))
c.close()
代码里的倒数第二行的 Tab 打不出来。
1
awli 2018-05-29 17:38:25 +08:00
看了你的代码我有种蛋蛋疼的感觉 ignore 可以不?
|
2
zynlp 2018-05-29 17:56:06 +08:00 via iPhone
open 里加个 encoding=“ utf8 ”,或者直接 error=“ ignore ”
你这估计是 windows 下默认 gbk 打开文件,‘\xf6 ’不在 gbk 编码表里,写不进去的 |
3
zwzmzd 2018-05-29 18:17:53 +08:00 via iPhone
运行前设置一下这个环境变量
PYTHONIOENCODING=UTF-8 |
4
2736 OP 我不是程序员啊,写代码只是为了临时解决某个问题的,这些代码只要调试完没问题,收集完数据了就不再使用了。
我之前想过可以用 ignore,但不知道往哪里插。 |
5
2736 OP open 里加上 encoding=“ utf8 ”解决了问题,非常感谢。
|