【发布时间】:2012-03-09 07:54:14
【问题描述】:
我正在使用 lxml 抓取网页。在某一时刻,我得到了一个表格单元格的内容。
# get last name
lastNameContainer = tableRow.xpath('./td[@class="lastName"]');
lastName = lastNameContainer[0].text
不幸的是,一个表格单元格的字符超出了 ASCII 的范围,从而产生了这个错误。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-7: ordinal not in range(128)
我尝试将此添加到我的 Python 文件的顶部,但无济于事。
#!/usr/bin/python
# -*- coding: utf-8 -*-
我怎样才能解决这个问题?我仍然想存储这个字符。顺便说一下,这个字符是 ♀ 还是 ♂,具体取决于表格行。
更新:我意识到当我将数据写入文件时会触发错误:
with open('myData.txt', 'w') as myFile:
myFile.write(lastName + '\n')
奇怪的是,这仍然会产生上述错误。
with open('myData.txt', 'w') as myFile:
myFile.write(lastName.decode('utf-8') + '\n')
【问题讨论】:
-
您正在编写的文件是用 ascii 编码的吗?当我将♀字符写入文件时,我没有遇到这个问题(我在 Ubuntu 中默认使用 UTF-8 写入)。
-
顺便说一下,
# -*- coding: utf-8 -*-只是用来定义源代码(yourmodule.py)编码(python.org/dev/peps/pep-0263) -
谢谢,如何更改写入文件的编码?
标签: python web-scraping lxml