处理Edge大小写时在Python中定界字符串

时间:2019-11-26 22:54:00

标签: python sql-server regex

我需要将SQL查询的Explicit列解析为Python中的列表。 一切正常,直到遇到特定情况为止。

鉴于特定的SQL查询,我面临以下明确的列:

column_a, column_b, column_c, row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column

这作为字符串返回给Python,在这里我需要以下格式的Python列表:

parsed_list = ['column_a','column_b','column_c','row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column']

但是,这引发了明显的问题,像这样在Window函数中分隔列:

table_columns = 'column_a, column_b, column_c, row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column'
print(table_columns.split(','))

Out[1]:
['column_a',
 ' column_b',
 ' column_c',
 ' row_number() over (partition by column_a',
 ' column_b',
 ' column_c order by column_a asc) as agg_column']

我对regex有点陌生,但是我可以用模式识别字符串中的SQL Window函数:

\w+\((\w+)?\)\sover\s\(.+\)\sas\s\w+$

但是,有可能:

  1. 使用my_column.split(',')正常拆分列表
  2. 但也允许上述边缘情况来解析下面再次显示的所需输出

['column_a','column_b','column_c','row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column']

0 个答案:

没有答案