您使用的是Python 2方法而不是Python 3.
更改:
outfile=open('./immates.csv','wb')
至:
outfile=open('./immates.csv','w')
并且您将获得具有以下输出的文件:
SNo,States,Dist,Population 1,Andhra Pradesh,13,49378776 2,Arunachal Pradesh,16,1382611 3,Assam,27,31169272 4,Bihar,38,103804637 5,Chhattisgarh,19,25540196 6,Goa,2,1457723 7,Gujarat,26,60383628 .....
在Python 3中,csv以文本模式获取输入,而在Python 2中,它以二进制模式获取.
编辑添加
这是我运行的代码:
url='http://www.mapsofindia.com/districts-india/' html = urllib.request.urlopen(url).read() soup = BeautifulSoup(html) table=soup.find('table', attrs={'class':'tableizer-table'}) list_of_rows=[] for row in table.findAll('tr')[1:]: list_of_cells=[] for cell in row.findAll('td'): list_of_cells.append(cell.text) list_of_rows.append(list_of_cells) outfile = open('./immates.csv','w') writer=csv.writer(outfile) writer.writerow(['SNo', 'States', 'Dist', 'Population']) writer.writerows(list_of_rows)
为了与`csv`模块一起使用,Python 3`open`也应该有`newline =''`作为参数[[ref](https://docs.python.org/3.3/library/csv.html?突出= CSV#csv.reader)] (9认同)
vinyll.. 16
我对Python3也有同样的问题.我的代码正在写入io.BytesIO()
.
用已io.StringIO()
解决的替换.
您使用的是Python 2方法而不是Python 3.
更改:
outfile=open('./immates.csv','wb')
至:
outfile=open('./immates.csv','w')
并且您将获得具有以下输出的文件:
SNo,States,Dist,Population 1,Andhra Pradesh,13,49378776 2,Arunachal Pradesh,16,1382611 3,Assam,27,31169272 4,Bihar,38,103804637 5,Chhattisgarh,19,25540196 6,Goa,2,1457723 7,Gujarat,26,60383628 .....
在Python 3中,csv以文本模式获取输入,而在Python 2中,它以二进制模式获取.
编辑添加
这是我运行的代码:
url='http://www.mapsofindia.com/districts-india/' html = urllib.request.urlopen(url).read() soup = BeautifulSoup(html) table=soup.find('table', attrs={'class':'tableizer-table'}) list_of_rows=[] for row in table.findAll('tr')[1:]: list_of_cells=[] for cell in row.findAll('td'): list_of_cells.append(cell.text) list_of_rows.append(list_of_cells) outfile = open('./immates.csv','w') writer=csv.writer(outfile) writer.writerow(['SNo', 'States', 'Dist', 'Population']) writer.writerows(list_of_rows)
我对Python3也有同样的问题.我的代码正在写入io.BytesIO()
.
用已io.StringIO()
解决的替换.