我想基于多个单词在python中拆分一个字符串,让我们有一个SQL查询
select a1 from table1 as tb1 join table2 as tb2 on tb1.a2 = tb2.a2 where tb1.a3 = 'something'
现在,我希望一次性将from
,join
,where
拆分此字符串,并希望获得一个列表
{
select a1,
table1 as tb1,
table2 as tb2 on tb1.a2 = tb2.a2,
tb1.a3 = 'something'
}
答案 0 :(得分:2)
有一个内置的库:
import re
result = re.split('from|join|where', yourStr)
PS:@anubhava解决方案更好,其中包括拆分期间确定器的空格。
答案 1 :(得分:1)
您可以使用sqlparse
:
>>> import sqlparse
>>> sql = "select a1 from table1 as tb1 join table2 as tb2 on tb1.a2 = tb2.a2 wher
e tb1.a3 = 'something'"
>>> formatted_sql = sqlparse.format(sql, reindent=True, keyword_case='lower')
>>> formatted_sql
"select a1\nfrom table1 as tb1\njoin table2 as tb2 on tb1.a2 = tb2.a2\nwhere tb1.a3 = 'something'"
>>> formatted_sql.split('\n')
['select a1', 'from table1 as tb1', 'join table2 as tb2 on tb1.a2 = tb2.a2', "where tb1.a3 = 'something'"]
您可以使用sqlparse.format()
格式化SQL查询,从而在插入\n
个字符时返回您的查询。然后,您可以拆分换行符以获得所需的列表。
您可以使用pip install sqlparse
安装此模块。