如何移除DataFrame名称中的特殊字符?Python多Sheet Excel处理
解决Excel工作表名含特殊字符无法生成合法DataFrame变量的问题
核心思路
通过正则表达式清理工作表名,将非合法字符替换为下划线,确保生成的变量名符合Python命名规则(仅含字母、数字、下划线,且不以数字开头),再将清理后的名称与对应DataFrame绑定。
具体实现代码
import pandas as pd import re # 读取Excel文件,获取工作表名到DataFrame的字典 df_dict = pd.read_excel('Book1.xlsx', sheet_name=None) # 定义清理函数,生成合法Python变量名 def clean_var_name(name): # 将所有非字母、数字、下划线的字符替换为下划线 cleaned_name = re.sub(r'[^a-zA-Z0-9_]', '_', name) # 若开头为数字,添加下划线前缀避免语法错误 if cleaned_name[0].isdigit(): cleaned_name = f'_{cleaned_name}' return cleaned_name # 循环将每个DataFrame绑定到清理后的合法变量名(全局变量) for sheet_name, df in df_dict.items(): valid_var_name = clean_var_name(sheet_name) globals()[valid_var_name] = df
使用示例
原工作表名GF-1会被清理为GF_1,H_2 S-Z变为H_2_S_Z,GB-SF+NZ变为GB_SF_NZ,之后可直接调用:
GF_1.head() H_2_S_Z.describe()
更规范的替代方案(推荐)
如果不想污染全局命名空间,建议将清理后的DataFrame存入字典统一管理:
cleaned_dfs = {} for sheet_name, df in df_dict.items(): cleaned_dfs[clean_var_name(sheet_name)] = df # 调用方式 cleaned_dfs['GF_1'].head()
内容的提问来源于stack exchange,提问作者Steve..Johnson
相关产品推荐
相关产品推荐

