我正在尝试阅读以下csv文件:
https://github.com/eljefe6a/nfldata/blob/master/stadiums.csv
我将内容复制并粘贴到excel中并将其保存为csv文件,因为它是unix格式。
我收到以下属性错误消息
任何帮助表示赞赏。谢谢。
import sys
import csv
with open('stadium.csv', newline='') as csvfile:
readCSV = csv.reader(csvfile,delimiter=',')
for line in readCSV:
line = line.strip()
unpacked = line.split(",")
stadium, capacity, expanded, location, surface, turf, team, opened, weather, roof, elevation = line.split(",")
results = [turf, "1"]
print("\t".join(results))
错误:
Traceback (most recent call last):
File "C:/Python34/mapper.py", line 31, in <module>
line = line.strip()
AttributeError: 'list' object has no attribute 'strip'
答案 0 :(得分:1)
当你在线调用.strip()时,它不起作用,因为line是一个列表类型对象。 Strip是仅适用于字符串的方法。如果我纠正你正在尝试做的事情,解压变量的正确方法是:
stadium, capacity, expanded, location, surface, turf, team, opened, weather, roof, elevation = line[0], line[1], line[2], line[3], line[4], line[5], line[6], line[7], line[8], line[9], line[10]
上述方法有效,因为您将值的位置放在括号内的列表(行)中,并将值解压缩到各自的变量中。 然后打电话你可以做:
stadium.split()
例如。
答案 1 :(得分:0)
当您使用csv
模块时,分隔符为','
,当您使用时 -
for line in readCSV:
行实际上是csv中的每一行,该行将是该行中所有元素的列表,由','
分隔。您实际上不需要再次剥离或拆分它们。
你可以尝试 -
import sys
import csv
with open('stadium.csv', newline='') as csvfile:
readCSV = csv.reader(csvfile,delimiter=',')
for line in readCSV:
stadium, capacity, expanded, location, surface, turf, team,opened, weather, roof, elevation = line
results = [turf, "1"]
print("\t".join(results))
请确保您在csv中有解包的元素。
答案 2 :(得分:0)
CSV阅读器已经为您分隔了所有字段。也就是说,你的line
变量已经是一个列表,而不是一个字符串,所以没有什么东西可以剥离,也没有什么要拆分。按照您希望的方式使用line
unpacked
。
这就是您首先使用csv
包的原因,请记住。