忽略Unicode错误

时间:2011-09-28 19:33:38

标签: python unicode csv ascii

当我在一堆网址上运行循环以找到这些网页上的所有链接(在某些Div中)时,我会收到此错误:

Traceback (most recent call last):
File "file_location", line 38, in <module>
out.writerow(tag['href'])
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 0: ordinal not in range(128)

我写的与此错误相关的代码是:

out  = csv.writer(open("file_location", "ab"), delimiter=";")
for tag in soup_3.findAll('a', href=True):   
    out.writerow(tag['href'])

有没有办法解决这个问题,可能使用if语句来忽略任何有Unicode错误的网址?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

您可以将writerow方法调用包装在try中并捕获异常以忽略它:

for tag in soup_3.findAll('a', href=True):
    try:
        out.writerow(tag['href'])
    except UnicodeEncodeError:
        pass

但你几乎肯定想为你的CSV文件选择ASCII以外的编码(utf-8,除非你有充分的理由使用别的东西),并用codecs.open()而不是内置的方式打开它在open