как осуществить чтение csv файла не с первой строки

у меня есть 20 записей в csv-файле: данные на каждого человека в отдельной строке. Как мне выбирать, из какой строки брать данные?

вот кусок кода, в который нужно добавить выбор строк для чтения

with open(csv_file, newline='', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    next(reader)
    for row in reader:

        data_1 = row[0]
        data_2 = row[1]
        data_3 = row[2]
        data_4 = row[3]
        data_5 = row[4]
        data_6 = row[5]
        data_7 = row[6]
        data_8 = row[7]
        data_9 = row[8]
        data_10 = row[9]
        data_11 = row[10]
        data_12 = row[11]
        data_13 = row[12]
        data_14 = row[17]


t2.cell(0, 0).text = str('Фамилия\nИмя\nОтчество\nПол\n')
t2.cell(0, 1).text = str(data_1 + '\n' + data_2 + '\n' + data_3 + '\n' + data_4)

я чуть-чуть продвинулся

переходить на следующую строку можно при помощи повторения команды next(reader)

выглядит это примерно так:

with open(csv_file, newline='', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    next(reader)
    next(reader)
    next(reader)
    next(reader)
    for row in reader:

        data_1 = row[0]
        data_2 = row[1]
        data_3 = row[2]
        data_4 = row[3]
        data_5 = row[4]
        data_6 = row[5]
        data_7 = row[6]
        data_8 = row[7]

может, кто знает как превратить это в какой-нибудь цикл, который будет либо сам перескакивать на следующую строку, либо при изменении одной цифры я бы мог менять строки?


Ответы (1 шт):

Автор решения: Loony

Я нашел решение: при помощи команды next(reader) можно переходить на следующую строку.

Я сделал цикл с этой командой и вот что получилось:

with open(csv_file, newline='', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    for i in range(5):                 
        next(reader)
    for row in reader:

        data_1 = row[0]
        data_2 = row[1]
        data_3 = row[2]
        data_4 = row[3]
        data_5 = row[4]
        data_6 = row[5]
        data_7 = row[6]
        data_8 = row[7]
        data_9 = row[8]
        data_10 = row[9]
        data_11 = row[10]
        data_12 = row[11]
        data_13 = row[12]
        data_14 = row[17]
        break

в строке for i in range цифра и обозначает строку, из которой берутся данные.

т.к. в цикле результат на одно число меньше, то при цифре 10 мы бы получали 9 строку. но в csv-файле первая строка - это обычно заголовок (фамилия, имя, отчество), поэтому цифра в цикле совпадает с выбранной строкой.

→ Ссылка