python - 使用正则表达式遍历 Excel 电子表格中的选项卡以获取选项卡名称
问题描述
我正在尝试遍历一些 Excel 电子表格并使用正则表达式从某些选项卡中提取信息。到目前为止,我已经编写了以下代码:
import pandas as pd
import os
import re
root = r"my_dir"
agg_df = pd.DataFrame()
for directory, subdirectory, files in os.walk(root):
for file in files:
if file.endswith('.xlsm'):
filepath = os.path.join(directory, file)
xls = pd.ExcelFile(filepath)
for i in xls.sheet_names:
if re.search(r'Apples', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
elif re.search(r'Oranges', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
elif re.search('Grapes', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
elif re.search(r'Tomatoes', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
elif re.search(r'Peaches', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
elif re.search(r'Pears', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
elif re.search(r'Bananas', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
elif re.search(r'Mangos', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
df_temp['Filepath'] = filepath
df_temp['Sheet_Name'] = i
agg_df = agg_df.append(df_temp)
但是,这是拉第一个选项卡,而不是我要指定的选项卡。
解决方案
您正在传递参数sheet_names,但熊猫文档提到参数是sheet_name。请参阅read_excel()函数。
我对您的代码进行了一些更改,请尝试执行:
import os
import pandas as pd
def parse_excel(sheet_name: str, abs_file_path: str):
df = pd.read_excel(abs_file_path, sheet_name=sheet_name)
df['Filepath'] = abs_file_path
df['Sheet_Name'] = sheet_name
return df
root = "my_dir"
agg_df = pd.DataFrame()
for directory, subdirectory, files in os.walk(root):
for file in files:
if file.endswith('.xlsm'):
file_path = os.path.join(directory, file)
xls = pd.ExcelFile(file_path)
sheet_names = ['Apples', 'Oranges', 'Grapes', 'Tomatoes', 'Peaches',
'Pears', 'Bananas', 'Mangos']
available_sheets = [sheet_name for sheet_name in xls.sheet_names if sheet_name in sheet_names]
for available_sheet in available_sheets:
agg_df = agg_df.append(parse_excel(available_sheet, file_path))
推荐阅读
- git - 更改 git 查看的 .ssh 公钥的位置
- python - 如何为张量流/服务模型预处理数据?
- facebook - 尝试登录facebook时如何解决错误的签名代码190
- c - 如何使用 GSL 库从两个复杂变量中插入一个复杂函数?
- angular - 如何修复 'ERROR TypeError: 无法读取 ANGULAR 中未定义的属性'用户名''
- ios - 为什么苹果在压缩之前对 .ipa 进行加密?
- python-3.x - 使用自定义输入训练 spacy 模型
- python - 如何限制线程池中线程的 nr 以实现无限迭代?
- assembly - 对 MIPS j 和 beq 指令使用十六进制值
- python-3.x - 如何覆盖 `TemplateView.as_view()` 并使用 ConfirmEmailView 进行电子邮件验证?