【发布时间】:2022-01-22 00:17:00
【问题描述】:
我有以下来自 JSON 的列表:
list = ['select', 'name1 = a.column1', 'name2 = a.column2', 'name3 = a.[column3]',
'from', 'xyz.[Table1$Name] c',
'select', 'name2 = b.othercolumn1', 'name2 = b.[othercolumn2]', 'name3 = b.othercolumn3',
'from', 'abc.[Table2$Name] d',
'where', 'x.[TableX] = '123',++++ and so on.....]
我想要的输出是一个包含 2 列的数据框,我可以将其提取为 excel,如下所示:
Table Name Column Name
Table1$Name column1
Table1$Name column2
Table1$Name column3
Table2$Name othercolumn1
Table2$Name othercolumn2
Table2$Name othercolumn3
我已经尝试了很多方法,但我无法实现所需的输出,我只想让这个“.bim”文件中的所有列针对相应的表进行 excel 文件输出,其他一切都像 where 语句,[] , c, a., b., 应在最终输出中删除。
【问题讨论】:
-
这看起来像是一个 sql 解析问题。在stackoverflow.com/questions/68880439/…之前回答过类似的问题
-
您的 list 似乎包含许多拆分的 SQL SELECT 语句。您已经显示了两个(不正确的)琐碎的单表选择。您是否只有这样的琐碎选择,或者您的列表是否包含其他 sql 语句或多表选择?
-
@SergeBallesta 我的列表包含许多“select”语句,然后是“from”语句。例如[“选择”、“列 1”、“从”、“表 1”、“哪里”、“abc=xyz”、“选择”、“abc1”、“abc2”、“abc3”、“从”、“表 2” , ++++ ... ... ]。我想要的输出只是作为 DataFrame 的表名和列名。
-
@RobRaymond 我已经在指定线程上查看了您的答案,但是,在我的情况下,它是不同的,不能用相同的方法解决。如果您能帮助我,那就太好了,因为自上周以来我一直在花时间寻找解决方案。谢谢你.. :)
-
这里有两种可能的方法。一种是加入列表的元素以构建真正的选择语句并在它们上使用 SQL 解析器。另一种是尝试直接使用元素本身,使用
'select'、'from'和'where'作为分隔标记。要走的路取决于您的列表实际包含的内容:如果 SQL 语句正确,第一种方法应该更复杂但可能更健壮,第二种方法应该更简单,但如果列表仅限于琐碎的选择语句,则只是一种选择。由于您只显示垃圾,我不能说更多......
标签: python json python-3.x pandas list