代码无输出问题排查及CSV参会者特定出生月份筛选需求
代码无输出的排查与解决方案
可能导致无输出的核心问题
- 月份提取逻辑错误:比如错误取
dob[5:7],拿到日期而非月份 - 格式匹配偏差:目标月份用数字
10而非字符串"10",和日期切片的字符串格式不匹配 - CSV读取异常:文件路径错误、文件为空、编码不兼容(比如用GBK读取UTF-8文件)
- 数据格式问题:存在不完整的行(比如只有姓名没有生日),导致筛选逻辑中断
正确的实现代码
以下是针对需求的Python实现,以筛选10月出生的参会者为例:
import csv # 目标月份,必须是两位字符串(和YYYYMMDD格式的月份部分一致) TARGET_MONTH = "10" def process_attendees(file_path): matched_attendees = [] try: with open(file_path, 'r', encoding='utf-8') as csv_file: reader = csv.reader(csv_file) # 若CSV无表头则删除此行 next(reader) for row in reader: # 跳过格式不完整的行 if len(row) != 3: continue first_name, last_name, dob = row # 提取YYYYMMDD中的月份部分(第5、6位) birth_month = dob[4:6] if birth_month == TARGET_MONTH: matched_attendees.append(f"{first_name} {last_name}") except FileNotFoundError: print(f"错误:未找到文件 {file_path}") return # 输出结果 if matched_attendees: print("符合条件的参会者:") for attendee in matched_attendees: print(attendee) else: print("未找到符合条件的参会者") # 调用函数,替换为你的CSV文件路径 process_attendees("attendees.csv")
关键注意事项
- 月份提取:严格按
YYYYMMDD格式,用dob[4:6]提取两位月份字符串,确保和目标月份格式一致 - 文件处理:添加异常捕获,避免因文件不存在导致程序崩溃却无提示
- 数据校验:跳过不完整的行,避免因数据错误引发逻辑中断
- 佛历处理:若仅筛选月份无需转换年份;若需年份计算,可通过
int(dob[:4]) >= 2500判断佛历,再减543转为公历
内容的提问来源于stack exchange,提问作者Deezel
相关产品推荐
相关产品推荐

