2017-08-10 6 views
1

私はlist_peopleの各項目の新しい行を人の名前と年齢で書き込もうとしています。以下に示すようにforループを使ってcsvに書き込む

Joann 15 
Maria 13 
Peter 19 

マイCSV私に1行6列を与える:

Joann 15 Maria 13 Peter 19 

をここで3人がリストにある場合は、私のCSVは以下のように3行2列を持っている必要があります私が使用しているコードです。私はそれが(list_peopleに一人一人のために)私のループの反復ごとに新しい行への書き込みを行うように変更する必要が何

row_lines=[] 

for i in list_people: 

    info = inspect.getmembers(i) 

    name = info[1] 
    row_lines.append(name) 
    age = info[2] 
    row_lines.append(age) 

with open('test.csv', 'w') as csvFile: 
    writer=csv.writer(csvFile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator='\n') 
    writer.writerow(row_lines) 

+1

私はあなたの代わりに['writerows'](https://docs.python.org/2/library/csv.csv.csvwriter.writerows)(' s'に注意してください)を使いたいと思います'writerow' – UnholySheep

+0

@UnholySheepこれはエラーを生成します:" _csv.Error:sequence expected " –

答えて

0

リストとして名前と年齢の各ペアを追加し、その後、csv.writerwriterows方法を使用します。

for i in list_people: 
    info = inspect.getmembers(i) 
    row_lines.append(info[1:3]) # slice [1:3] returns a list of items 1 and 2 

with open('test.csv', 'w') as csvFile: 
    writer = csv.writer(csvFile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator='\n') 
    writer.writerows(row_lines) 
1

が一度ごcsvファイルを開き、イテレーションごとに1行を書き、そのための必要はありませんが多くの変数:

with open('test'.csv, 'w') as csvFile: 
    writer=csv.writer(csvFile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator='\n') 

    for i in list_people: 
     info = inspect.getmembers(i) 
     writer.writerow(info[1:3]) 

または完全にさえも高速になりますジェネレータの理解を、使用してwriterowsforループを置き換える:

writer.writerows(inspect.getmembers(i)[1:3] for i in list_people) 
関連する問題