Python f-string生成CSV逐行输出异常:首行重复问题如何解决
问题原因
你的代码存在三处核心错误导致输出不符合预期:
- 计数器
i初始化位置错误:i = 0写在了遍历行的for循环外层,第一行处理完成后i已经累加到10,后续其他行的while判断i < 10永远不成立,不会执行写入逻辑,最终只有第一行重复输出。 - 多余的while循环:你预期每行CSV对应一行输出,不需要嵌套while做次数限制,这个冗余逻辑是重复输出的直接原因。
- 没必要的手动关文件:
with open语法会自动管理文件生命周期,不需要手动调用f.close(),反而可能引发后续写入报错。
另外你单独声明4个列表存储各列数据的操作完全冗余,直接遍历csv.DictReader返回的每行对象即可取值,能大幅简化代码降低出错概率。
修正后代码
import csv csv_file = input("请输入你的文件路径:") # 新增encoding参数避免乱码问题 with open(csv_file, 'r', encoding='utf-8') as cat_example: cat_entries = csv.DictReader(cat_example) with open("cat_output_file.txt", "w", encoding='utf-8') as f: # 直接遍历每一行CSV记录写入即可 for row in cat_entries: f.write(f"This cat's name is {row['name']}, fur color is {row['color']}, its age is {row['age']}, and its gender is {row['gender']}.\n")
内容的提问来源于stack exchange,提问作者jswdesign
相关产品推荐
相关产品推荐

