Python: анализ текста неизвестной длины - PullRequest
0 голосов
/ 14 мая 2018

У меня есть база данных, полная строк, таких как:

as.web.product.viewed(AT)2018-01-28T19:00:52.032Z(THEN)as.web.product.viewed(AT)2018-01-28T19:02:20.132Z

(другой возможный разделитель - "(WITH)", а action - as.web.product.purchased, поэтому в идеале мне нужно решение, которое является как можно более общим)

В последовательности может быть любое количество действий и в более или менее любом порядке. Мне нужно иметь возможность изолировать имя действия (например, as.web.product.viewed) и время, когда оно произошло, а также поддерживать порядок действий.

Каков был бы самый Python-подобный способ сделать это?

РЕДАКТИРОВАТЬ: желаемый вывод (для примера выше) - 2 списка, такие как:

['as.web.product.viewed','as.web.product.viewed']
['2018-01-28T19:00:52.032Z','2018-01-28T19:02:20.132Z']

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете использовать регулярное выражение для разбиения строки, когда встречается текст в круглых скобках:

import re
pat = re.compile('''\([A-Za-z]+\)''')
s = "as.web.product.viewed(AT)2018-01-28T19:00:52.032Z(THEN)as.web.product.viewed(AT)2018-01-28T19:02:20.132Z"
r = (re.split(pat, s))
print (list(zip(r[::2], r[1::2]))) # group pairwise if needed !

Возвращает:

[('as.web.product.viewed', '2018-01-28T19:00:52.032Z'), ('as.web.product.viewed', '2018-01-28T19:02:20.132Z')]
...