обратный шаблон с питоном - PullRequest
2 голосов
/ 04 ноября 2011

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

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

John - Smith : 0123
children: 
  Sam
  Kim

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

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

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

1 Ответ

4 голосов
/ 04 ноября 2011

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

>>> import re
>>> data = 'John - Smith : 0123\nchildren: \n  Sam\n  Kim'
>>> match = re.match(r'(\w+) - (\w+) : (\d+).*?children:(.*)', data, re.S)
>>> match.groups()
('John', 'Smith', '0123', ' \n  Sam\n  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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...