只是测试一些东西作为练习.我有这个巨大的CSV文件在线 https://raw.github.com/datasets/gdp/master/data/gdp.csv 我想读取所有数据并将其放入表中,以便我可以分析它并制作表.我到目前为止的代码是使用其他StackOverflow问题和其他网站放在一起的,但似乎发生的事情是什么时候它被阅读,然后立即打印出来,这是逐字母,所以我得到:
['C']
['o']
['u']
['n']
['t']
['r']
['y']
[' ']
['N']
['a']
['m']
['e']
['', '']
['C']
['o']
['u']
['n']
['t']
['r']
['y']
[' ']
['C']
['o']
['d']
['e']
['', '']
['Y']
['e']
['a']
['r']
['', '']
['V']
['a']
['l']
['u']
['e']
[]
[]
['A']
['r']
['a']
['b']
[' ']
['W']
['o']
['r']
['l']
['d']
['', '']
Run Code Online (Sandbox Code Playgroud)
到目前为止我的代码是这样的:
import csv
import urllib.request
url = "https://raw.github.com/datasets/gdp/master/data/gdp.csv"
webpage = urllib.request.urlopen(url)
datareader = csv.reader(webpage.read().decode('utf-8'))
data = []
for row in datareader:
data.append(row)
for row in data:
print(row)
Run Code Online (Sandbox Code Playgroud)
如何更改它以便它实际上逐行读取,然后甚至将该行拆分为不同的变量.我在使用前做过这个
payRollNumber, salary, jobTitle, otherNames, \
surname = line.strip().split(',')
Run Code Online (Sandbox Code Playgroud)
我得到行后我可以应用它.有任何想法吗?
Mar*_*ers 15
在将读取的CSV数据传递给csv.reader():之前,需要按行拆分读取的CSV数据:
datareader = csv.reader(webpage.read().decode('utf-8').splitlines())
Run Code Online (Sandbox Code Playgroud)
该csv.reader()则负责其余的为您服务.
您还可io.TextIOWrapper()以为您处理读取,解码和线路处理:
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))
Run Code Online (Sandbox Code Playgroud)
循环阅读器并将行添加到列表中没有什么意义; 你可以这样做:
data = list(datareader)
Run Code Online (Sandbox Code Playgroud)
相反,但如果你想要做的只是打印出列,直接在阅读器上循环,并这样做:
datareader = csv.reader(io.TextIOWrapper(webpage))
for row in datareader:
print(row)
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,通过自己分割线或使用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. ...
Run Code Online (Sandbox Code Playgroud)