使用for循环写入csv

2024-09-30 18:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着为列表中的每一项写一行新的人名和年龄。如果列表中有3个人,我的CSV应该有3行2列,如下所示:

Joann  15
Maria  13
Peter  19

我的CSV显示1行6列,如下所示:

^{pr2}$

这是我使用的代码。在

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)

我需要做些什么更改,以便在循环的每次迭代中写入新行(针对列表中的每个人)?在


Tags: csvcsvfilenameinfo列表agepeterwriter
2条回答

打开csv文件一次,每次迭代写一行,不需要这么多变量:

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])

或者使用生成器理解将for循环完全替换为writerows,这将更快:

^{pr2}$

将每对姓名和年龄作为列表追加,然后使用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)

相关问题 更多 >