2015-01-25 4 views
0

Я пишу данные из списка в файл CSV, как это:Как написать последовательные столбцы CSV в Python

def writeToCsv(list, max): 
    writer = csv.writer(open('file.csv', 'wb'), delimiter=' ') 
    for x in range(0,max): 
     writer.writerow(list[x]['year']) 

Это заполняет первый столбец с годами, который является большим. Теперь я хочу заполнить следующий столбец «именем» в списке. Как я могу запустить вышеуказанный код еще раз, но заполнить его следующим столбцом вместо того, чтобы писать в первом столбце с именем?

+1

При использовании модуля 'csv' вы должны структурировать свой код, чтобы вы записывали одну строку * за раз, а не один столбец. Вот почему метод называется 'writow'. – BrenBarn

ответ

1

Просто дайте список writerow:

def writeToCsv(list, max): 
    writer = csv.writer(open('file.csv', 'wb'), delimiter=' ') 
    for x in range(0,max): 
     writer.writerow([list[x]['year'], list[x]['name']]) 

Примечание Вы можете сделать это:

def writeToCsv(lst, limit): 
    # use a context manager to close the file for you when you're done 
    with open('file.csv', 'wb') as f: 
     writer = csv.writer(f, delimiter=' ') 
     # takes the first `max` dictionaries from the list 
     for item in lst[:limit]: 
      writer.writerow([item['year'], item['name']]) 

Это использует slicing и менеджер with контекста.

примечание: Я изменил имена аргументов функции, так что вы не shdow встроенных функций list и max. (спасибо @Padraic Cunningham)

+1

, возможно, стоит упомянуть и изменить многочисленные встроенные имена, которые затеняются. –

+0

Я полностью пропустил это. лол. Благодарю. –

+0

Это помещает как «год», так и «имя» в тот же самый первый столбец – Cybernetic

Смежные вопросы