如何在Python中逐行写入CSV文件并实现日期存在性判断
修正CSV写入代码,实现日期存在性标记输出
我来帮你调整代码,解决当前的问题并实现你想要的效果。先说说你现有代码里的几个小问题:
- 用
zip(j, n)是错误的:j是单个日期字符串,zip会把它拆成单个字符,和数字n配对,导致每行只输出一个字符和数字,不是完整的日期列 - 缺少表头写入逻辑
- 不需要内层循环,直接构造每行数据即可
下面是修正后的完整代码:
import csv # 别忘了导入csv模块 dates = ["2024-01-01", "2024-01-02", "2024-01-03"] # 示例日期列表 dates2 = ["2024-01-02"] # 示例存在的日期列表 with open('userperday.csv', "w", newline='') as f: # 添加newline=''避免空行 writer = csv.writer(f) # 先写入表头 writer.writerow(["日期", "是否存在"]) # 循环处理每个日期 for j in dates: # 判断日期是否在dates2中,赋值1或0 n = 1 if j in dates2 else 0 # 直接写入一行:[日期, 标记值] writer.writerow([j, n])
代码说明:
- 导入csv模块:这是使用csv写入功能的前提,你的原代码里可能漏了这一步
- 添加
newline='':避免Windows系统下写入CSV时出现多余的空行 - 写入表头:先通过
writer.writerow写入表头行,对应你需要的两列标题 - 简化标记赋值:用三元表达式一行完成判断,比先设n=0再修改更简洁
- 直接构造行数据:把日期和标记值放在一个列表里,用
writer.writerow直接写入,不需要多余的zip和循环
这样运行后,userperday.csv的内容就会是:
日期,是否存在 2024-01-01,0 2024-01-02,1 2024-01-03,0
完全符合你想要的“日期列+存在标记列”的需求~
内容的提问来源于stack exchange,提问作者Melli
相关产品推荐
相关产品推荐

