Сделать while loop распечатать несколько списков с помощью csv.reader

У меня есть документ Excel, заполненный информацией, которую я хочу, чтобы мой код python распечатывался. Чтобы дать вам ребят идею, как выглядит мой документ excel, я распечатаю код:

import csv
file = csv.reader(open("n:\population.csv"))
print file.next()

Это дает нам следующий результат:

['country', 'country isocode', 'year', 'POP']

но это не та часть, которую я хочу распечатать, соответствующая информация находится в других строках, поэтому, если я введу еще один файл печати .next() Мы получаем следующую информацию:

['Netherlands', 'NLD', '1950', '10113.527']

Это, если мне нужна соответствующая информация, теперь мне нужно распечатать год и Population (POP) и сделать это для каждой строки в моем документе. Поэтому я придумал следующий код для этого:

import csv
file = csv.reader(open("population.csv"))
print file.next()
def print_population_list(filename): population_list_length = len("population.csv") number = 0 line = file.next() while number < population_list_length: print line[2:] population_list_length = population_list_length - 1
print_population_list('N:\population.csv')

Проблема в том, что вывод этого кода выглядит так:

['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']
['1950', '10113.527']

Итак, как мне заставить мой код распечатывать следующую строку моего документа, а не печатать одну и ту же строку снова и снова до номера> population_list_length.

Если бы кто-то помог мне с этой проблемой, я был бы так благодарен

1 ответ

С самого начала одна из вещей, которые вы не делаете, - это продвижение линии внутри цикла while (или в цикле for, если на то пошло).

Вы определили строку как file.next(), но затем скажите ей, чтобы она снова и снова печатала часть из одной и той же строки.

Попробуйте это, принимая во внимание, чтобы продвинуть линию в конце каждого цикла после того, как вы напечатали свои данные:

def print_population_list(filename): population_list_length = len("population.csv") number = 0 line = file.next() while number < population_list_length: print line[2:] # the next line of code advances the line in the file line = file.next() population_list_length = population_list_length - 1 # you don't need to advance the line here, # as you've already advanced it at the end of the last loop for contry, isocode, year, population in print line[2:] # the next line of code advances the line in the file line = file.next() population_list_length = population_list_length - 1

licensed under cc by-sa 3.0 with attribution.