Python通用查询Dataquest.i

2024-04-25 01:37:21 发布

您现在位置:Python中文网/ 问答频道 /正文

试图通过数据任务.io当然,我很好奇为什么我的答案和公认的答案冲突。目标是从.csv中为变量dataset\u 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

有什么想法吗,很有帮助。你知道吗


Tags: csv答案代码selfdatainitdefcode
1条回答
网友
1楼 · 发布于 2024-04-25 01:37:21

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

当我检查这个问题时,你的列表似乎比正确答案长1个元素。这可能是由于您使用的手动读取方法。split(“\n”) split()的诀窍是它与join()相反,因此split()生成的列表可以与join()一起使用,以精确地重新生成原始字符串。因此,如果CSV有一个尾随\n,则列表中的最后一个元素将作为空字符串。CSV模块非常强大,我强烈建议您使用它,而不是重新发明轮子,除非您正在进行学术练习,以了解像这样的挑战。你知道吗

相关问题 更多 >