Python 使用for循环写入csv

Python 使用for循环写入csv,python,csv,for-loop,Python,Csv,For Loop,我正在尝试为列表中的每个项目写一行新的人的名字和年龄。如果列表中有3个人,我的CSV应该有3行2列,如下所示: Joann 15 Maria 13 Peter 19 我的CSV为我提供1行6列,如下所示: Joann 15 Maria 13 Peter 19 这是我正在使用的代码 row_lines=[] for i in list_people: info = inspect.getmembers(i) name = info[1] row_lines

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

Joann  15
Maria  13
Peter  19
我的CSV为我提供1行6列,如下所示:

Joann 15 Maria 13 Peter 19
这是我正在使用的代码

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)

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

将每对姓名和年龄附加为一个列表,然后使用
csv.writer的
writerows
方法:

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)

打开
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
,这将更快:

writer.writerows(inspect.getmembers(i)[1:3] for i in list_people)

我想您应该使用(注意
s
)而不是生成错误的
writerow
@UnholySheep:“\u csv.error:sequence expected”