我正在使用 Python 2.7.3 和 BeuatofulSoup 从网站的表格中获取数据,然后使用codecs
将内容写入文件。我收集的变量之一,偶尔会出现乱码。例如,如果网站表看起来像这样
Year Name City State
2000 John D’Iberville MS
2001 Steve Arlington VA
因此,当我生成City
变量时,我总是将其编码为utf-8
:
Year = foo.text
Name = foo1.text
City = foo3.text.encode('utf-8').strip()
State = foo4.text
RowsData = ("{0},{1},{2},{3}").format(Year, Name, City, State)
所以我创建的逗号分隔字符串列表的内容被称为RowData
并且RowHeaders
看起来像这样
RowHeaders = ['Year,Name,City,State']
RowsData = ['2000, John, D\xc3\xa2\xe2\x82\xac\xe2\x84\xa2Iberville, MS',
'2001, Steve, Arlington, VA']
然后我尝试使用以下代码将其写入文件
file1 = codecs.open(Outfile.csv,"wb","utf8")
file1.write(RowHeaders + u'\n')
line = "\n".join(RowsData)
file1.write(line + u'\r\n')
file1.close()
我收到以下错误
Traceback (most recent call last):
File "HSRecruitsFBByPosition.py", line 141, in <module>
file1.write(line + u'\r\n')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 6879: ordinal not in range(128)
我可以使用 csv writer 包RowsData
,它工作正常。由于我不想进入的原因,我需要使用编解码器来输出 csv 文件。我不知道发生了什么。谁能帮我解决这个问题?提前致谢。