Разделить список символов на основе условий в Python Regex - PullRequest
0 голосов
/ 06 июня 2019

У меня есть список символов в этом формате "EXECUTE SYS-SM-THIS-1004"

Какой эффективный способ разбить этот список на основе условий:

  1. Из списка рассмотрите символы после EXECUTE, разделите их, используя дефис (-) в качестве разделителя
  2. Из полученного списка первый элемент должен быть равен любому из [SYS, CSC, ISC]
  3. Последнее слово должно быть четырехзначным числом
  4. Содержимое между первым и последним словами, которое необходимо переместить в новый список после удаления начальных и конечных дефисов. Наконец, дефис должен быть заменен подчеркиванием.

Условие, чтобы найти, есть ли в строке работа EXECUTE работает. Как проверить другие условия?

if re.match('^\s*EXECUTE .*', line) or re.match('^\s*execute.*', line) :

Введите:

a = ["EXECUTE SYS-SM-THIS-1004"]

Ожидаемый результат:

X = SYS
Y = SM_THIS
Z = SYS-SM-THIS-1004

1 Ответ

2 голосов
/ 06 июня 2019

Использование re.match

Ex:

import re
s = "EXECUTE SYS-SM-THIS-1004"
m = re.match(r"EXECUTE (?P<Z>(?P<X>SYS|CSC|ISC)\-(?P<Y>\S+)\-\d{4})$", s.strip())
if m:
    X = m.group("X")
    Y = m.group("Y").replace("-", "_")
    Z = m.group("Z")
    print(X, Y, Z)

Выход:

('SYS', 'SM_THIS', 'SYS-SM-THIS-1004')
...