Неравномерное регулярное выражение набора данных - PullRequest
0 голосов
/ 17 марта 2020

Пожалуйста, предложите регулярное выражение для следующего набора данных

gSoCa,['25','78'],fa,GT,GTM_19,gPfRec,['22','78','78'],10,fa,GT,TS/C_LE_RE,
gPreRe,['12'],10,fa,GT,TS/C_L_OW,gTLAsTe,['2'],PT,TEST/UP_P_IST,gBeAdRe,['78','2'],5,fa,GET,ulr/UTC_9,gEdiRen,['2'],fa,GT,ua/ngs_2018-Copy,

попробовал:

(\w+,(\['?\d+'?(?:,\s*'?\d+'?)*\]),(\w+),([\w/_-]+|[\w/]+),([\w/_-]+|[\w/]+)),

ожидается python кортеж:

[gSoCa,25,78,fa,GT,GTM_19,.....ua/ngs_2018-Copy]

см. Демонстрацию https://regex101.com/r/zHXUmh/1

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Ваш "ожидаемый" кортеж невозможен в Python, поскольку он содержит строки без кавычек. Тем не менее, все, что ему нужно - это набор не установленных символов:

print (tuple(re.findall(r"[^\[\],']+", text)))

результат (как уже отмечалось, не именно то, что вы хотите!):

('gSoCa', '25', '78', 'fa', 'GT', 'GTM_19', 'gPfRec', '22', '78', '78', '10', 'fa', 'GT', 'TS/C_LE_RE')
0 голосов
/ 17 марта 2020

Может быть, что-то вроде этого может работать:

text = """gSoCa,['25','78'],fa,GT,GTM_19,
gPfRec,['22','78','78'],10,fa,GT,TS/C_LE_RE,
gPreRe,['12'],10,fa,GT,TS/C_L_OW,
gTLAsTe,['2'],PT,TEST/UP_P_IST,
gBeAdRe,['78','2'],5,fa,GET,ulr/UTC_9,
gEdiRen,['2'],fa,GT,ua/ngs_2018-Copy,"""

result = [s.strip("[]'\n")  for s in  text.split(",")]
print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...