将 XML 转换为 SEVERAL 数据帧时,如何以动态方式命名这些 dfs?

when converting XML to SEVERAL dataframes, how to name these dfs in a dynamic way?

我的代码在底部

"parse_xml"函数可以将xml文件转为df,例如"df=parse_XML("example.xml", lst_level2_tags)" works 但是因为我想保存到几个 dfs 所以我想要像 df_ first_level_tag, etc

这样的名字

当我 运行 底部代码时,我得到一个错误 "f'df_{first_level_tag}'=parse_XML("example.xml", lst_level2_tags) ^ 语法错误:无法分配给文字“

我也尝试了 .format 方法而不是 f-string 但它也没有用 至少有30个dfs要保存,我不想一个一个地做。尽管 pandas 外 Python 中的 f-string 总是成功,但

这里的问题是关于 f-string/format 方法还是我的代码有其他逻辑问题?

如果您需要,parse_xml 函数直接来自此 link the function definition

for first_level_tag in first_level_tags:
    lst_level2_tags = []
    for subchild in root[0]:
        lst_level2_tags.append(subchild.tag)
    f'df_{first_level_tag}'=parse_XML("example.xml", lst_level2_tags) 

在这种情况下,最好将它们放入字典中:

dfs = {}
for first_level_tag in first_level_tags:
    lst_level2_tags = []
    for subchild in root[0]:
        lst_level2_tags.append(subchild.tag)
    dfs[first_level_tag] = parse_XML("example.xml", lst_level2_tags)

您的 f 字符串在结构上没有任何问题,但您通常无法在 Python 中获得动态变量名而不做一些丑陋的事情。通常,当您需要类似的东西时,将值存储在字典中最终会成为一种更简洁的解决方案。

以这种方式使用它们的一个优点是,如果您想对它们中的每一个做一些事情,您可以稍后迭代字典。例如,如果你想将它们中的每一个都作为 CSV 文件写入磁盘,并使用与标签匹配的名称,你可以这样做:

for key, df in dfs.items():
    df.to_csv(f'{key}.csv')

您也可以单独引用它们(因此,如果有一个名为 a 的标签,您可以稍后在您的代码中引用 dfs['a'] 来访问它)。