我正在使用Python 3.2和Mac OS Maverick,我正在尝试使用以下格式获取.cvs文件:
'Lisa plowed ', '1A', 'field', 'field', 'field', 'field', 'field'
'John greased ', '1A', 'axle', 'wheel', 'wheels', 'wheel', 'engine'
'Tracy freed ', '1A', 'animals', 'fish', 'slaves', 'slaves', 'slaves'
'Paul alleged ', '1A', 'truth', 'crime', 'facts', 'infidelity', 'incident'
到字典中,每行中的第一项是键,行的其余部分是映射到该键的值。 我尝试了不同的东西,我得到的最接近的是这段代码,但不幸的是,我还没有:
import csv
data =open('test.csv', encoding = 'utf=8')
reader = csv.reader(data, delimiter=",")
for col in reader:
print(col)
result = {}
for row in reader:
key = row[0]
result[key] = row[1:]
print(result)
我得到的结果只是{},好像字典是空的。 我真的很感激任何有关这方面的帮助,无论是提供新的替代方案还是将我推荐给我能找到答案的地方。 非常感谢!
答案 0 :(得分:5)
尝试:
import csv
data={}
with open('/tmp/text.txt') as fin:
reader=csv.reader(fin, skipinitialspace=True, quotechar="'")
for row in reader:
data[row[0]]=row[1:]
print(data)
# {'Lisa plowed ': ['1A', 'field', 'field', 'field', 'field', 'field'], 'Tracy freed ': ['1A', 'animals', 'fish', 'slaves', 'slaves', 'slaves'], 'Paul alleged ': ['1A', 'truth', 'crime', 'facts', 'infidelity', 'incident'], 'John greased ': ['1A', 'axle', 'wheel', 'wheels', 'wheel', 'engine']}
答案 1 :(得分:3)
第一次迭代reader
后,它是空的。
答案 2 :(得分:1)
您应该能够从输出中了解发生了什么。首先你这样做:
for col in reader:
print(col)
由于reader
是行的可迭代,因此会打印出CSV文件中的每一行。您将变量命名为col
这一事实并没有任何影响,除非让读者感到困惑。
如果您想特别对待标题行,您应该做的是:
headers = next(reader)
for col in headers:
print(col)