Регулярные выражения Python извлечения данных - PullRequest
0 голосов
/ 12 декабря 2018

Как использовать регулярное выражение Python для извлечения данных из следующих двух строк

TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --In Progress

TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --Completed

Мне нужен следующий CSV-файл из этого:

Формат: TaskID, Priority,Статус

TASK000123,P1,In Progress

TASK000123,P2,Completed

Как я могу это сделать?Спасибо за помощь мне

Ответы [ 2 ]

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

Здесь в опции, использующей re.findall:

input = "TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --In Progress\nTASK000123-Tomcat server hosted on tbu.test1 is down-P1 --Completed"
results = re.findall(r"(TASK\d+).*?-(P\d+) --(.*)(?=\n|$)", input)
print(results)

[('TASK000123', 'P1', 'In Progress'), ('TASK000123', 'P1', 'Completed')]

Обратите внимание, что режим DOT ALL здесь не должен быть необходим, потому что нам никогда не нужен .* для соответствия между символами новой строки.Кроме того, описанное выше работает без использования режима MULTILINE.

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

Это один подход с использованием простой итерации.

Пример:

s = """TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --In Progress
TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --Completed"""

result = [["TaskID","Priority","Status"]]

for i in s.splitlines():
    val = i.split("-")                          #Split by '-'
    result.append([val[0], val[2], val[-1]])
print(result)

Вывод:

[['TaskID', 'Priority', 'Status'],
 ['TASK000123', 'P1 ', 'In Progress'],
 ['TASK000123', 'P1 ', 'Completed']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...