csv.writer写入CSV文件时将每个字符视为字段的问题求助
问题:CSV写入时每行内容被拆分为单个字符
问题根源
csv.writer.writerows() 方法要求传入的是多行数据的集合,其中每一行必须是一个可迭代的单元格序列(比如列表、元组)。你当前的teams列表中每个元素是字符串,而字符串本身是单个字符的可迭代对象,因此writerows会将每个字符串拆分为单个字符,作为独立单元格写入CSV。
解决方案
方法1:循环使用writerow()写入
将每个团队名包装为单个元素的列表,确保每行对应一个单元格:
import csv with open('teams.csv', 'w', newline='') as f: wtr = csv.writer(f) for team in teams: wtr.writerow([team])
方法2:用生成器配合writerows()
通过生成器将每个字符串包装为序列,实现一次性写入:
import csv with open('teams.csv', 'w', newline='') as f: wtr = csv.writer(f) wtr.writerows([team] for team in teams)
额外优化:简化Teams列表生成
可以用列表推导式替代原有的while循环,让代码更简洁高效:
nteams = 16 teams = [f"Team {c}" for c in range(1, nteams + 1)]
注意事项
在Python 3中写入CSV文件时,建议添加newline=''参数,避免文件中出现多余的空行。
内容的提问来源于stack exchange,提问作者Mark Lewis
相关产品推荐
相关产品推荐

