我需要创建一个字典,在其中我可以将表中的所有选择属性拆分为条件,将其分为不同的列表,但是它应该只有一个键。到目前为止,我已经尝试了以下方法-
import pandas
import re
import sqlparse
query = "(select t1.id, t1.feed_id, t2.eff_dt, name, type from table1 t1 INNER JOIN table2 t2 ON ( t1.eff_dt = t2.eff_dt WHERE t2.eff_dt = CAST ( ('2020/12/20') AS DATE) and (t2.name = 'abc' or t2.name='pqr'))"
query2= "SELECT DISTINCT id, feed_id, eff_date FROM"
newInput= input('enter the eff_dt:')
new_where = '("'+newInput+'")'
query1= re.sub("(?<=WHERE t2.eff_dt = CAST \( )(.*)(?= AS DATE)", new_where , query, flags=re.IGNORECASE)
formatted_query = sqlparse.format(query1, reindent=True, keyword_case='lower')
formatted_query1 = sqlparse.format(query2, reindent=True, keyword_case='lower')
a = formatted_query.strip()
a1 = formatted_query1.strip()
newformat = a1+a
newformat.lstrip()
dict_list = newformat.split('\n')
dictOfWords = { i : dict_list[i] for i in range(0, len(dict_list) ) }
newDict = dict(zip(dictOfWords.keys(), [v.strip() if isinstance(v,str) else v for v in dictOfWords.values()]))
newDict
这将获取用户输入的日期,并给出如下输出:
enter the eff_dt:2022/01/20
{0: 'select distinct id,',
1: 'feed_id,',
2: 'eff_date',
3: 'from(',
4: 'select t1.id,',
5: 't1.feed_id,',
6: 't2.eff_dt,',
7: 'name,',
8: 'type',
9: 'from table1 t1',
10: 'inner join table2 t2 on (t1.eff_dt = t2.eff_dt',
11: 'where t2.eff_dt = cast (("2022/01/20") as DATE)',
12: "and (t2.name = 'abc'",
13: "or t2.name='pqr'))"}
但是我需要以下输出-
{0: 'select distinct id,','feed_id,','eff_date','from(','select t1.id,','t1.feed_id,','t2.eff_dt,','name,','type','from table1 t1','inner join table2 t2 on (t1.eff_dt = t2.eff_dt','where t2.eff_dt = cast (("2022/01/20") as DATE)',"and (t2.name = 'abc'","or t2.name='pqr'))"}
有办法吗?删除除1之外的所有键,但将所有值保留在字典中。我真的很感谢您的帮助。
我们来做一本新字典。
这样会将first key
原始词典的保留为唯一键,并将所有值作为列表添加到该键。
# let d be the original dictionary
k,v = list(d.keys()), list(d.values())
new = {k[0]:v}
print(new)
我已经直接更新了您的代码,如果您仍然遇到错误,请告诉我。
import pandas
import re
import sqlparse
query = "(select t1.id, t1.feed_id, t2.eff_dt, name, type from table1 t1 INNER JOIN table2 t2 ON ( t1.eff_dt = t2.eff_dt WHERE t2.eff_dt = CAST ( ('2020/12/20') AS DATE) and (t2.name = 'abc' or t2.name='pqr'))"
query2= "SELECT DISTINCT id, feed_id, eff_date FROM"
newInput= input('enter the eff_dt:')
new_where = '("'+newInput+'")'
query1= re.sub("(?<=WHERE t2.eff_dt = CAST \( )(.*)(?= AS DATE)", new_where , query, flags=re.IGNORECASE)
formatted_query = sqlparse.format(query1, reindent=True, keyword_case='lower')
formatted_query1 = sqlparse.format(query2, reindent=True, keyword_case='lower')
a = formatted_query.strip()
a1 = formatted_query1.strip()
newformat = a1+a
newformat.lstrip()
dict_list = newformat.split('\n')
dictOfWords = { i : dict_list[i] for i in range(0, len(dict_list) ) }
newDict = dict(zip(dictOfWords.keys(), [v.strip() if isinstance(v,str) else v for v in dictOfWords.values()]))
k,v = list(newDict.keys()), list(newDict.values())
new = {k[0]:v}
new
{0: ['select distinct id,',
'feed_id,',
'eff_date',
'from(',
'select t1.id,',
't1.feed_id,',
't2.eff_dt,',
'name,',
'type',
'from table1 t1',
'inner join table2 t2 on (t1.eff_dt = t2.eff_dt',
'where t2.eff_dt = cast (("2022/01/20") as DATE)',
"and (t2.name = 'abc'",
"or t2.name='pqr'))"]}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句