【发布时间】:2018-03-16 07:32:35
【问题描述】:
我有一个 csv 文件 paises.csv,如下所示:
Chile;17000000;0.72;FALSE;0
Hanslandia;2000000;0.2;FALSE;91
Bastiland;4000000;0;TRUE;0
第一列是country 名称,以下是它的一些特征,例如它的人口。因此,我创建了一个 country 类并尝试创建国家并使用 csv 文件中的特征填充它:
# -*- coding: utf-8 -*-
##Importing libraries
import csv
##Defining classes
class country:
def __init__(self,inhabitants,tolerance,underground,infected_perc):
self.inhabitants = inhabitants
self.tolerance = tolerance
self.underground = underground
self.infected_perc = infected_perc
with open('paises.csv', 'r') as f:
reader = csv.reader(f, delimiter = ";")
for row in reader:
row[0]=country(row[1],row[2],row[3],row[4])
代码运行。但是,它甚至没有创建国家。当我尝试查看row 时,我得到的是:
AttributeError("Can't get attribute 'country' on ",)
【问题讨论】:
-
您打算将数据存储在哪里?
-
好吧,在“国家”类的对象中。第一行是名称,下面是它的特征
-
您需要一个容器(列表、字典、集合)来存储您的国家/地区。否则,您似乎缺少一些类的概念。
-
row[0]=country(row[1],row[2],row[3],row[4])创建一个country实例,将其复制到rows的第一个槽,覆盖国家名称。然后当您阅读下一行时它会被丢弃。我不认为你想那样做。正如 lmiuelvargasf 所说,您应该将这些内容保存到某个容器中,例如字典,其中row[0]作为键,country实例作为值。 -
嘿!我刚刚创建了一个字典,其键是国名,值是对象。但是,我无法得到它们。当我尝试获取字典 [国家] 时,我得到同样的错误:AttributeError("Can't get attribute 'country' on ",)
标签: python csv object populate