добавить список, пропуская строку в python - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь решить проблему, поставленную в курсе cs50, я читаю данные из файла csv через csv.DictReader, и я хочу взять первую строку, содержащую заголовки, в списке, а затем другие строки в другом списке моя реализация была такой

line_count = 0
with open(argv[1], "r") as csvfile:
    csvreader = csv.DictReader(csvfile)
    for row in csvreader:
        if line_count == 0:
            fields = row
            line_count += 1
        else:
            people.append(row)
            line_count += 1
''' or
fields = []
with open(argv[1], "r") as csvfile:
    csvreader = csv.DictReader(csvfile)
    fields = next(csvreader)
    for row in csvreader:
        people.append(row)
'''

в обоих случаях, первая строка в моем CSV-файле после пропуска заголовков, CSV выглядит так:

name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5

Алиса пропускается и не делает ' t go в мой список

1 Ответ

1 голос
/ 28 мая 2020

csv.DictReader предполагает, что заголовок есть, и предварительно читает его за вас. Одним из качеств DictReader является то, что вы можете использовать имена столбцов для доступа к данным в строках, поэтому первая строка всегда считывается как заголовки. Ваш закомментированный код близок к рабочему, т.е.

FirstName,LastName,Age
John,Doe,25
Jane,Doey,26

можно прочитать с помощью:

with open(argv[1], "r") as csvfile:
    csvreader = csv.DictReader(csvfile)
    fields = csvreader.fieldnames  # ['FirstName','LastName','Age']
    for row in csvreader:
        people.append(row)
...