Как запустить al oop с указанного c индекса списка в python? - PullRequest
1 голос
/ 02 августа 2020

У меня есть этот файл csv с этими данными:

1 this_is_x, this_is_y
2 info about x, info about y
2 10,20
3 10,10
4 5,10

with open('my_file.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
next(csv_reader)
for row in csv_reader:
    x, y = row
    list_x.append(x)
    list_y.append(y)

Как запустить l oop с 10,20 для добавления x и y в list_x и list_y без первых двух строк?

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Насколько мне известно, метод csv.reader () возвращает reader объект , который выполняет итерацию по строкам в заданном CSV-файле , то есть без индекса , а это означает, что вы не можете его разрезать . Вы можете избежать первых двух строк, создав список из csv.reader () возвращенного объекта, а затем просто нарежьте его, как [2:], чтобы отказаться от первых двух строк файла csv.

Код приведен ниже:

import csv

list_x = []
list_y = []

with open('so_test.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    for x, y in list(csv_reader)[2:]:
        list_x.append(x)
        list_y.append(y)

print(list_x)
print(list_y)

Результат:

['10', '10', '5']
['20', '10', '10']

[PS]: этот код протестирован в версии python 3.6.8 .

0 голосов
/ 02 августа 2020

Если вы повторите оператор next(), еще одна строка будет пропущена в начале файла:

    import csv

    list_x = []
    list_y = []

    with open('my_file.csv') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        next(csv_reader)  # skip header line
        next(csv_reader)  # skip second line
        for x, y in csv_reader:
            list_x.append(x)
            list_y.append(y)

Обратите внимание, как вы можете избежать использования промежуточных переменных при чтении в кортеже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...