У меня есть строки, которые представляют некоторые данные в текстовом файле. Все они имеют следующий формат:
s = 'TheBears SUCCESS Number of wins : 14'
Все они начинаются с имени, затем пробела и текста «УСПЕХ Количество побед:» и, наконец, количества побед, n1. Есть несколько строк, каждая с другим именем и значением. Я пытаюсь написать программу, которая может анализировать любую из этих строк и возвращать имя набора данных и числовое значение в конце строки. Я пытаюсь использовать для этого регулярные выражения и пришел к следующему:
import re
def winnumbers(s):
pattern = re.compile(r"""(?P<name>.*?) #starting name
\s*SUCCESS #whitespace and success
\s*Number\s*of\s*wins #whitespace and strings
\s*\:\s*(?P<n1>.*?)""",re.VERBOSE)
match = pattern.match(s)
name = match.group("name")
n1 = match.group("n1")
return (name, n1)
Пока что моя программа может возвращать имя, но после этого возникают проблемы. У всех есть текст «УСПЕХ, количество побед:», поэтому я подумал, как найти способ сопоставить этот текст. Но я понимаю, что мой метод сопоставления точной подстроки сейчас неверен. Есть ли способ сопоставить всю подстроку как часть шаблона? В последнее время я довольно много читал о регулярных выражениях, но не нашел ничего подобного. Я все еще новичок в программировании и ценю любую помощь.
В конце концов, я воспользуюсь функцией float (), чтобы вернуть n1 как число, но я оставил это, потому что он не может правильно найти число прямо сейчас и вернет только ошибку.