使用 pd.read_excel 忽略部分文件名

Ignoring Part of Filename Using pd.read_excel

我是 Python 和 Pandas 的新手,正在寻求帮助。

我编写了 Python 代码以读取每月 Excel 文件、处理数据并将其附加到另一个文件。我的问题是每个月原始文件都会重命名以匹配生成的年份和日期,例如上个月是“2022 McCarthy LEM_2022 Financial Reporting_20220329。”

有没有办法使用 pd.read_excel 并让它在包含“McCarthy”、“LEM”或“Financial Reporting”的文件夹中提取任何 .xlsx 文件名?

我目前只使用简单的代码:

    pd.read_excel("2022 McCarthy LEM_2022 Financial 
    Reporting_20220329.xlsx",  sheet_name = "2022 Billable Work Order 
    Data")

或者我应该采取其他方法来解决这个问题?

理想情况下,我会通过电子邮件收到报告,将报告保存到文件夹中,然后想启动 Python 脚本,而不必在代码中更改文件名。

感谢您的任何想法和帮助!

您可以使用 glob 之类的东西,它包含在 python 标准库中。

import glob

substring_list = ["McCarthy", "LEM", "Financial Reporting"]

file_lists = glob.glob("path/to/directory/*.xlsx")
for file in file_lists:

    if any(substring in file for substring in substring_list):
      
        pd.read_excel(file,  sheet_name = "2022 Billable Work Order Data")
      

我使用了更基本的方法来检查子字符串是否在字符串中,而不是正则表达式,但是 glob 也可以接受正则表达式,因此您可以那样做。但是,如果您只对一组特定的子字符串感兴趣,那么这可能更容易理解并在需要时进行更改。