Вы можете разобрать это с помощью регулярного выражения:
>>> import re
>>> str1 = "Some Event 21.08.2019—31.08.2019 Standart (1+1) , Some text"
>>> m = re.match(r'.*? \d{2}\.\d{2}\.\d{4}.\d{2}\.\d{2}\.\d{4} (.*?) , .*', str1)
>>> m.group(1)
'Standart (1+1)'
.*?
соответствует чему угодно, но только так, как должно. \d{2}
соответствует двум цифрам. \.
соответствует периоду. .
совпадает с чем угодно, я использую его для соответствия с этой чертой без необходимости вводить его. (.*?)
сопоставляет что-либо и захватывает его таким образом, что впоследствии оно будет иметь ,
. В конце концов я собираю только все остальное с .*
.
Это сломается, если в желаемой строке есть запятая. Тогда было бы лучше иметь (.*)
для захвата и .*?
в конце.
И, кстати, скорее всего написано «Стандарт», а не «Стандарт».