在将读取的CSV数据传递给csv.reader()之前,需要将其按行拆分:datareader = csv.reader(webpage.read().decode('utf-8').splitlines())
然后csv.reader()帮你处理剩下的事情。
您还可以让^{}负责阅读、解码和行处理:import csv
import io
import urllib.request
url = "https://raw.github.com/datasets/gdp/master/data/gdp.csv"
webpage = urllib.request.urlopen(url)
datareader = csv.reader(io.TextIOWrapper(webpage))
在读卡器上循环并向列表中添加行几乎没有意义;您可以执行以下操作:data = list(datareader)
相反,如果您只想打印出列,则直接在读卡器上循环并执行以下操作:datareader = csv.reader(io.TextIOWrapper(webpage))
for row in datareader:
print(row)
不管是哪种方式,通过自己拆分行还是使用TextIOWrapper,代码现在生成:['Country Name', 'Country Code', 'Year', 'Value']
['Arab World', 'ARB', '1968', '32456179321.45']
['Arab World', 'ARB', '1969', '35797666653.6002']
['Arab World', 'ARB', '1970', '39062044200.4362']
['Arab World', 'ARB', '1971', '45271917893.3429']
['Arab World', 'ARB', '1972', '54936622019.8224']
['Arab World', 'ARB', '1973', '69564884441.8264']
['Arab World', 'ARB', '1974', '132123836511.468']
['Arab World', 'ARB', '1975', '147666389454.913']
['Arab World', 'ARB', '1976', '182208407088.856']
# ... etc. ...