我不确定要如何处理此错误。我认为这与需要添加.encode(’utf-8’)有关。但是我不确定这是否是我需要做的,也不是应该在哪里应用。
错误是:
line 40, in <module>
writer.writerows(list_of_rows)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 1
7: ordinal not in range(128)
这是我的python脚本的基础。
import csv
from BeautifulSoup import BeautifulSoup
url = \
'https://dummysite'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html)
table = soup.find('table', {'class': 'table'})
list_of_rows = []
for row in table.findAll('tr')[1:]:
list_of_cells = []
for cell in row.findAll('td'):
text = cell.text.replace('[','').replace(']','')
list_of_cells.append(text)
list_of_rows.append(list_of_cells)
outfile = open("./test.csv", "wb")
writer = csv.writer(outfile)
writer.writerow(["Name", "Location"])
writer.writerows(list_of_rows)
Python 2.x CSV库已损坏。您有三个选择。按照复杂度的顺序:
编辑:请参见下文
使用固定库 https://github.com/jdunck/python-unicodecsv(
pip install unicodecsv
)。用作临时替代品-示例:
with open("myfile.csv", 'rb') as my_file:
r = unicodecsv.DictReader(my_file, encoding='utf-8')
阅读有关Unicode的CSV手册:https://docs.python.org/2/library/csv.html(请参阅底部的示例)
手动将每个项目编码为UTF-8:
for cell in row.findAll('td'):
text = cell.text.replace('[','').replace(']','')
list_of_cells.append(text.encode("utf-8"))
编辑,我发现读取UTF-16时python-unicodecsv也坏了 。它抱怨任何0x00
字节。
而是使用https://github.com/ryanhiebert/backports.csv,它更类似于Python
3的实现,并使用io
模块。
安装:
pip install backports.csv
用法:
from backports import csv
import io
with io.open(filename, encoding='utf-8') as f:
r = csv.reader(f):
问题内容: 我正在使用maven编译软件包,它说生成失败,并显示以下编译错误: SpanishTest.java [31,81]不可编码的字符,用于编码UTF8 我在线上搜索了很多人,将源编码从UTF-8更改为ISO-8859-1似乎可行,但是我仍然遇到相同的编译错误。我正在使用32位Ubuntu。这是该标签在我的pom.xml中的外观 即使我将标签更改为ISO-8859-1,我仍然会收到错误消息
问题内容: 当上传具有非ASCII字符的文件时,出现UnicodeEncodeError: 我使用MySQL,nginx和FastCGI运行Django 1.2。 根据Django Trac数据库,这是已解决的问题,但是我仍然有问题。欢迎提供有关如何修复的任何建议。 编辑:这是我的图像字段: 问题答案: 在对此进行更多调查之后,我发现我尚未在我的主要Nginx配置文件中设置字符集: 通过添加以上内
问题内容: 我正在尝试抓取一个网站,但这给我一个错误。 我正在使用以下代码: 我收到以下错误: 我该怎么做才能解决此问题? 问题答案: 我通过添加将其修复。 那意味着变成。
问题内容: 当我尝试在数据库中插入外来字符时,可能是什么导致此错误? 而我该如何解决呢? 谢谢! 问题答案: 字符U + 201C左双引号在Latin-1(ISO-8859-1)编码中不存在。 这 是 目前在代码页1252(西欧)。这是Windows特定的编码,基于ISO-8859-1,但会将多余的字符放入0x80-0x9F范围内。代码页1252通常与ISO-8859-1混淆,这是一种令人烦恼但现
我正试图抓取一个网站,但它给了我一个错误。 我正在使用以下代码: 我得到了以下错误: 我能做些什么来解决这个问题?
我的代码适用于英语文本,但不适用于俄语search_text。我怎么才能修好它? 错误文本 UnicodeEncodeError:“latin-1”编解码器无法对位置41-46中的字符进行编码:正文('МССаа')不是有效的latin-1。使用身体。如果要发送utf-8编码的文件,请对其进行编码(“utf-8”)。 我的代码 我试过了 但是收到的