如何基于多个单词或子字符串拆分字符串

时间:2018-03-05 11:26:12

标签: python regex string

我想基于多个单词在python中拆分一个字符串,让我们有一个SQL查询

select a1 from table1 as tb1 join table2 as tb2 on tb1.a2 = tb2.a2 where tb1.a3 = 'something'

现在,我希望一次性将fromjoinwhere拆分此字符串,并希望获得一个列表 { select a1, table1 as tb1, table2 as tb2 on tb1.a2 = tb2.a2, tb1.a3 = 'something' }

2 个答案:

答案 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安装此模块。