2015-07-12 82 views
0

我想在下面的csv文件阅读:蟒蛇3 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

我不知道为什么你再次分裂'line.split(“,”)' –

回答

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。

+0

谢谢。我只是在元素中添加了它们,并且它们是第一个字母大写的列名。文件“C:/Python34/mapper.py”,第30行,在 球场,容量,扩展,位置,表面,草皮,团队,已打开,天气,屋顶,海拔 NameError:名称'Stadium'没有定义 – user4745212

+0

我忘了把它们用引号括起来,所以现在就起作用了。谢谢 – user4745212

0

CSV阅读器已经为您分隔了所有字段。也就是说,你的line变量已经是一个列表,而不是一个字符串,所以没有东西可以剥离,也没有东西可以分割。使用line您打算使用的方式unpacked

这就是为什么你首先使用csv包,请记住。

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() 

例如。