обратный шаблон с помощью python

#python #regex #string #templates

#python #регулярное выражение #строка #шаблоны

Вопрос:

У меня есть файл, полный данных в определенном формате, я хочу заполнить этими данными свою собственную структуру данных

например, у меня может быть такой файл:

 John - Smith : 0123
children: 
  Sam
  Kim
  

Я хочу что-то сделать с этой строкой, чтобы извлечь данные, например, в

 firstName = "John"
lastName = "Smith"
number = "0123"
children = ['Sam', 'Kim']
  

Я надеюсь, что есть более простой способ, чем использование разделителей..

Ответ №1:

Вот решение для регулярных выражений:

 >>> import re
>>> data = 'John - Smith : 0123nchildren: n  Samn  Kim'
>>> match = re.match(r'(w ) - (w ) : (d ).*?children:(.*)', data, re.S)
>>> match.groups()
('John', 'Smith', '0123', ' n  Samn  Kim')
  

Затем вы можете назначить группы своим переменным:

 >>> firstName, lastName, number = match.groups()[:3]
>>> children = [c.strip() for c in match.group(4).strip().split('n')]
  

и результат…

 >>> firstName
'John'
>>> lastName
'Smith'
>>> number
'0123'
>>> children
['Sam', 'Kim']