Python一般查询-Dataquest.io

时间:2018-09-30 18:57:09

标签: python csv reader

尝试遍历Dataquest.io课程,并对为什么我的答案与接受的答案冲突感到好奇。目标是从.csv中为变量:dataset_data

生成列表

提出的解决方案是:

    # Solution code
class Dataset:
    def __init__(self, data):
        self.data = data

f = open("nfl.csv", 'r')
csvreader = csv.reader(f)
nfl_data = list(csvreader)

nfl_dataset = Dataset(nfl_data)
dataset_data = nfl_dataset.data

但是,我编写了以下代码:

class Dataset:
    def __init__(self,data):
        self.nfl_data = []
        self.temp_data = open(data,'r').read().split('\n')
        for n_data in self.temp_data:
            self.nfl_data.append(n_data.split(","))
nfl_datas = Dataset("nfl.csv")
dataset_data = nfl_datas.nfl_data

对于这两种方法,print()都会产生以下内容:

[['year', 'week', 'winner', 'loser'], ['2009', '1', 'Pittsburgh Steelers', 'Tennessee Titans'],

但是在网站上,我的代码产生了以下错误:

dataset_data isn’t defined in your code, but we expected it to be list type

任何想法,都有帮助。

1 个答案:

答案 0 :(得分:0)

尝试打印两种情况下结果列表的长度。尝试查看为什么两段代码不能产生相同的输出以检查这两种输出实际上不同的所有可能方式时,这是一个好主意。

当我检查此问题时,您的列表似乎比正确答案长1个元素。这可能是由于您使用.split(“ \ n”) split()的窍门在于它是join()的逆函数,因此split()的结果列表可以与join()一起使用,以精确地重新生成原始字符串。因此,如果CSV末尾有\ n,则列表中的最后一个元素将为空字符串。 CSV模块功能非常强大,我强烈建议您使用它,而不是重新发明轮子,除非您正在进行一次学术练习来理解像这样的挑战。