Необходимо получить 2 подстроки из строк.Две подстроки разделены несколькими символами, включая специальные символы, такие как двоеточия и знаки доллара, и т. Д. Две подстроки имеют свои определенные шаблоны соответственно.
Фон:
Есть 3 строки, показывающие спортивные события и их окончательные результаты, если результаты существуют.В каждой строке название спортивного события и его результат разделены не относящимися к делу символами.Необходимо извлечь имя события и его результат, если он существует.Если событие не имеет результата, ничего не извлекается.
Следующие 3 строки являются примерами:
String[0] = 'Boys 10&U Event 1 2.32WBC aRc$-MW 9O%Abd, dL 2.3SV Dd$-MW 10Tzos, edResult, Final 93.1AB-ED Boys 13&O Event 1 e&12d &12C, Ac&c AcResult, Final 1.5ED-cA'
С String[0]
, необходимо получить
[('Boys 10&U Event 1', 'Result, Final 93.1'), ('Boys 13&O Event 1', 'Result, Final 1.5')]
String[1] = 'Boys 7&U Event 2 2.3B Rd$-ac %d, a 2@Ac Dd$-MW '
С String[1]
, нечего извлекать, так как событие не имеет результата.
String[2] = 'Boys 7&U Event 2 c3$ 13_E Boys 10&U Event 3 2.32WBC aRc$-MW 9O%Abd, dL 2.3SV Dd$-MW 10Tzos, edResult, Final 1.23AB-ED'
С String[2]
, необходимо получить
('Boys 10&U Event 3', 'Result, Final 1.23') and totally ignore 'Boys 7&U Event 2'.
Я использую следующий коддля обработки 3 строк выше, с s = String[0], String[1], String[2].
re.findall(r'(Boys \d+&\[A-Z]\s\Event\s\d*).*?(Result, Final\s\d*\.\d{2})[A-Z]*', s)
Код хорошо работает на String[0]
и String[1]
, но не работает на String[2]
, так как извлекает имя первого спортивного события ирезультат 2-го спортивного события.
Может ли кто-нибудь помочь мне создать код для извлечения названия и результата спортивного события в каждой строке?Если у спортивного события нет соответствующего результата, код должен игнорировать это событие.
Спасибо!