python 3 csv文件 - 属性错误

时间:2015-07-12 04:16:39

标签: python

我正在尝试阅读以下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'

3 个答案:

答案 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包的原因,请记住。