You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:36:01