Общий запрос Python - Dataquest.io - PullRequest
       10

Общий запрос Python - Dataquest.io

0 голосов
/ 30 сентября 2018

Попытка пройти курс 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 голосов
/ 01 октября 2018

Попробуйте напечатать длину полученного списка списков для обоих случаев.Это хорошая идея, когда вы пытаетесь понять, почему два фрагмента кода не выдают один и тот же вывод, чтобы проверить все возможные различия между этими двумя выходными данными.

Когда я проверил эту проблему, она выглядит как ваш списокна 1 элемент длиннее правильного ответа.Вероятно, это связано с вашим ручным методом чтения, где вы использовали .split ("\ n") Хитрость с split () заключается в том, что она обратна join (), поэтому можно использовать результирующий список из split ().с помощью join (), чтобы точно восстановить исходную строку.Таким образом, если у CSV есть завершающий символ \ n, тогда у вас будет последний элемент в списке в виде пустой строки.Модуль CSV довольно мощный, и я настоятельно рекомендую использовать его, а не изобретать велосипед, если только вы не выполняете академическое упражнение, чтобы понять проблемы, подобные этому.

...