Разобрать строку через запятую, чтобы продиктовать - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть строка ввода, как показано ниже.Я хотел бы разобрать его на основе запятых в диктовку, как показано ниже.Проблема в том, что иногда в скобках содержатся запятые, как в примере ниже, а также внутри кавычек.Я не очень разбираюсь в сопоставлении регулярных выражений, поэтому любые советы очень ценятся.

input:

"ty_event_name, from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd') as ty_date,'${hiveconf:run_dt}' as sessions_fy,orders_xy"

output:

{1:'ty_event_name',
2:'from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd') as ty_date',
3:''${hiveconf:run_dt}' as sessions_fy',
4:'orders_xy'}

Tried:

import pandas as pd
import numpy as np
import re

teststr="ty_event_name, from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd') as ty_date,'${hiveconf:run_dt}' as sessions_fy,orders_xy"

tstr=re.sub('(?!\B"[^"]*),(?![^"]*"\B)',',',teststr).split()

tstr

Вывод:

['ty_event_name,',
 "from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd')",
 'as',
 "ty_date,'${hiveconf:run_dt}'",
 'as',
 'sessions_fy,orders_xy']

1 Ответ

0 голосов
/ 22 декабря 2018

Выглядит так, как будто сделал трюк:

код:

re.split(r',\s*(?=[^)]*(?:\(|$))', teststr) 

вывод:

['ty_event_name',
 "from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd') as ty_date",
 "'${hiveconf:run_dt}' as sessions_fy",
 'orders_xy']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...