python - 将 XML 转换为几个数据帧时,如何以动态方式命名这些 dfs?
问题描述
我的代码在底部
“parse_xml”函数可以将 xml 文件传输到 df,例如,“df=parse_XML("example.xml", lst_level2_tags)” 可以,但是因为我想保存到几个 dfs,所以我想要像 df_first_level_tag 这样的名称, ETC
当我运行底部代码时,出现错误“f'df_{first_level_tag}'=parse_XML("example.xml", lst_level2_tags) ^ SyntaxError: can't assign to literal"
我也尝试了 .format 方法而不是 f-string 但它也没有工作至少有 30 个 dfs 要保存,我不想一个一个地做。不过,在熊猫之外的 Python 中,f-string 总是成功的
这里的问题是关于 f-string/format 方法还是我的代码有其他逻辑问题?
如果您需要,parse_xml 函数直接来自此链接 函数定义
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')
You can also just refer to them individually (so if there was a tag named a
, you could refer to dfs['a']
to access it in your code later).
推荐阅读
- javascript - Vuejs 更新循环
- python - 在 Python 中生成按总和排序的 (i,j) 序列
- javascript - 如何在此循环中动态选择要定位的提取?
- javascript - 如何在 Chrome 扩展中使用内联事件处理程序?
- mongodb - 为医生工作班表/集合建模?
- pac4j - 有没有办法使用 pac4j AnonymousClient 作为其他直接客户端的后备?
- javascript - 如何垂直居中第一个孩子和第二个孩子遵循流程
- heroku - Prerender.io 的缓存 html 标头被静态标头替换
- python-3.x - AttributeError:“NoneType”对象没有“读取”属性-openpyxl
- rust - 有没有办法在没有标准库的情况下在 rust 中加入 char 和 &str