2024-06-28 14:46:34 发布
网友
我有一个python字符串列表,这些字符串是表示数据帧的变量的名称
my_dataframe_list = ['df1', 'df2', 'df3']
因此,从概念上讲,需要删除单引号,最终输出应该是数据帧列表
my_dataframe_list = [df1, df2, df3]
一种方法是使用内置的^{}方法:
my_dataframe_list = ['df1', 'df2', 'df3'] my_dataframe_list = [eval(df) for df in my_dataframe_list]
您可以使用^{}代替列表理解:
my_dataframe_list = ['df1', 'df2', 'df3'] my_dataframe_list = list(map(eval, my_dataframe_list))
但是要小心,eval方法是危险的;您不应该在不受信任的输入上使用它。有关更多详细信息,请参阅本文:Eval really is dangerous
eval
也许一个更过滤的列表会更好:
my_dataframe_list = [eval(df) for df in my_dataframe_list if df.startswith('df') and df[2:].isdigit()]
但是,当然,您可以做的最好的事情是以一种不需要使用eval的方式构造现有代码
此堆栈溢出帖子建议使用ast.literal_eval()方法:Python: make eval safe
当然,它需要您安装ast模块,并且提供的字符串或节点可能只包含以下Python文本结构:字符串、字节、数字、元组、列表、dicts、set、booleans和None
ast
您可以access it from ^{}:
df1 = pd.DataFrame([1, 2, 3]) df2 = pd.DataFrame([2, 4, 6]) my_dataframe_list = ['df1', 'df2'] my_dataframe_list = [globals()[df] for df in my_dataframe_list]
my_dataframe_list[0] # 0 # 0 1 # 1 2 # 2 3
my_dataframe_list[1] # 0 # 0 2 # 1 4 # 2 6
一种方法是使用内置的^{} 方法:
您可以使用^{} 代替列表理解:
但是要小心,
eval
方法是危险的;您不应该在不受信任的输入上使用它。有关更多详细信息,请参阅本文:Eval really is dangerous也许一个更过滤的列表会更好:
但是,当然,您可以做的最好的事情是以一种不需要使用
eval
的方式构造现有代码此堆栈溢出帖子建议使用ast.literal_eval()方法:Python: make eval safe
当然,它需要您安装
ast
模块,并且提供的字符串或节点可能只包含以下Python文本结构:字符串、字节、数字、元组、列表、dicts、set、booleans和None您可以access it from ^{} :
相关问题 更多 >
编程相关推荐