Если текст посередине всегда постоянен, регулярное выражение не требуется.Встроенные функции обработки строк будут более эффективными, их будет легче разрабатывать, отлаживать и обслуживать.В этом случае вы можете просто использовать встроенную функцию split()
, чтобы получить фигуры, а затем очистить две фигуры соответствующим образом:
>>> def winnumber(s):
... parts = s.split('SUCCESS Number of wins : ')
... return (parts[0].strip(), int(parts[1]))
...
>>> winnumber('TheBears SUCCESS Number of wins : 14')
('TheBears', 14)
Обратите внимание, что я вывел число побед в виде целого числа (предположительно, это всегда будет целое число), но вы можете легко заменить float()
- или любую другую функцию преобразования - на int()
, если хотите.
Редактировать : Очевидно, этобудет работать только для отдельных строк - если вы вызовете функцию с несколькими строками, это приведет к ошибкам.Чтобы обработать весь файл, я бы использовал map()
:
>>> map(winnumber, open(filename, 'r'))
[('TheBears', 14), ('OtherTeam', 6)]
Кроме того, я не уверен в вашем конечном использовании этого кода, но вам может быть проще работать с выходными данными, так каксловарь:
>>> dict(map(winnumber, open(filename, 'r')))
{'OtherTeam': 6, 'TheBears': 14}