Python使用pandas读取Excel文件如何适配不同月份拼写格式
解决方法
核心逻辑是遍历对应月份的所有拼写变体,逐个尝试匹配存在的文件,读取成功就终止循环。
完整实现代码
import pandas as pd import os # 补全所有月份的拼写变体列表,后续遇到新的拼写直接在对应月份的列表里追加即可 month_dict = { 1: ["Jan", "January"], 2: ["Feb", "February"], 3: ["Mar", "March"], 4: ["Apr", "April"], 5: ["May"], 6: ["Jun", "June"], 7: ["Jul", "July"], 8: ["Aug", "August"], 9: ["Sep", "Sept", "September"], 10: ["Oct", "October"], 11: ["Nov", "November"], 12: ["Dec", "December"] } # 用户输入月份逻辑(保持原有逻辑不变,可按需调整输入提示) while True: month = int(input("请输入月份数字(1代表1月,12代表12月):")) if month not in range(1, 13): print("输入不合法,请输入1-12之间的数字") else: print("月份输入有效") break # 这里替换为你的实际年份取值逻辑 year = 2021 excel = None # 遍历当前月份的所有拼写变体,尝试匹配文件 for month_spell in month_dict[month]: file_path = f"{month_spell} {year} Monthly Statement.xlsx" if os.path.exists(file_path): excel = pd.read_excel(file_path) print(f"文件读取成功:{file_path}") break else: # 所有拼写都未匹配到文件时抛出异常 raise FileNotFoundError(f"未找到{year}年{month}月的对账单文件,所有已知拼写变体均不匹配")
可选实现(无需引入os模块)
如果不想额外引入os模块,也可以直接捕获pd.read_excel的文件不存在异常:
for month_spell in month_dict[month]: file_path = f"{month_spell} {year} Monthly Statement.xlsx" try: excel = pd.read_excel(file_path) print(f"文件读取成功:{file_path}") break except FileNotFoundError: continue else: raise FileNotFoundError(f"未找到{year}年{month}月的对账单文件")
注意事项
- 后续遇到新的月份拼写格式,直接在
month_dict对应月份的列表里添加即可,无需修改读取逻辑 - 如果存在大小写不统一的问题,例如文件名为小写开头的
august 2021 xxx,可以在拼接路径时统一大小写,例如改为f"{month_spell.lower()} {year} Monthly Statement.xlsx"适配 for...else为Python特有语法,仅当循环正常结束(未被break中断)时才会执行else内的逻辑,也就是所有拼写都试过都找不到文件时才会报错
内容的提问来源于stack exchange,提问作者torkestativ
相关产品推荐
相关产品推荐

