Python CSV无法编码ch

2024-04-28 20:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python一个漂亮的汤,我创建了一个脚本,该脚本将企业的名称、地址和电话号码从网站上删除,并将输出保存到CSV文件的三列中。在

脚本运行得很好,但当我找到一个如下所示的企业名称时,它就停止了:

u'\nLevel 12, 280 George Street SYDNEY\xa0 NSW\xa0 2000. . Sydney. NSW 2000\n'

问题出在“xa0”部分。错误消息指出:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 35: ordinal not in range(128)

我对这个错误的含义有一个模糊的概念,但不知道如何处理它。有什么想法吗?在

谢谢

编辑:

我的脚本如下:

import bs4
import requests

page = requests.get('http://accountantlist.com.au/x123-Accountants-in-Sydney.aspx?Page=0')
soup = bs4.BeautifulSoup(page.content)

for company in soup.select('table#ctl00_ContentPlaceHolder1_dgLawyers tr > td > table'):
     name = company.a.text
     address = company.find_all('tr')[1].text
     phone = company.tr.find_all('td')[1].text
     with open('/home/kwal0203/Desktop/eggs.csv', 'a') as csvfile:
             s = csv.writer(csvfile)
             s.writerow([name,address,phone])

Tags: textinimport脚本名称错误pagerequests
1条回答
网友
1楼 · 发布于 2024-04-28 20:16:29

在写入csv文件时,您需要将其编码为utf-8格式,因为Python的内置csv不支持unicode。在

def remove_non_ascii(text):
    return ''.join(i for i in text if ord(i)<128)


name = remove_non_ascii(company.a.text)
address = remove_non_ascii(company.find_all('tr')[1].text)
phone = remove_non_ascii(company.tr.find_all('td')[1].text)

with open('/home/kwal0203/Desktop/eggs.csv', 'a') as csvfile:
    s = csv.writer(csvfile)
    s.writerow([data.encode("utf-8") for data in [name,address,phone]])

或者可以安装默认支持unicode的unicodecsv。在

你可以这样安装。在

^{pr2}$

相关问题 更多 >