如何使用Python将列表中的每个值作为单独行写入CSV文件
问题原因
你的代码问题出在rows变量的构造逻辑:csv.writer的writerows方法要求传入嵌套列表结构,每一个子列表对应CSV的一行。你现在写的rows = [my_list]是把所有标题打包成了同一行的多个列,所以输出时所有内容会用逗号分隔放在同一行。
修改后的完整代码
import requests import csv my_list = [] for i in range(1, 10): url = 'https://jsonplaceholder.typicode.com/todos/'+str(i) response = requests.get(url) jsonResponse = response.json() my_list.append(jsonResponse['title']) print(my_list) fields = ['names'] # 修改点:将每个标题单独封装为一个子列表,对应CSV的一行(只有1列) rows = [[item] for item in my_list] with open('data.csv', 'w', newline='', encoding='utf-8') as f: write = csv.writer(f) write.writerow(fields) write.writerows(rows)
额外补充:打开文件时加上
newline=''可以避免Windows系统下生成的CSV出现多余空行,加encoding='utf-8'可以避免特殊字符乱码。
修改后运行代码生成的CSV就会和你预期的效果一致,每个名称单独占一行。
内容的提问来源于stack exchange,提问作者Dave Brady
相关产品推荐
相关产品推荐

