Если вам нужны числа, следующие за «faj» и «alfaj», и вы хотите, чтобы все значения в строке возвращались, то re.findall
находит все элементы в строке, которые соответствуют выражению регулярного выражения первой группы.
import re
s1 = "Kategóriák:Faj1 (alfaj:12345.1) Pseuda_kategóriák:Faj2 (alfaj:678910.11)"
s2 = "kategóriák:Faj3 (alfaj:121314.15)Pseuda_kategóriák:Faj4 (alfaj:161718.19)Faj5 (alfaj:20212223.24)"
def find_elements(s):
elements = {'nev':None,
'alnev':None}
elements['alnev'] = re.findall("alfaj:([\d\.]+)",s)
elements['nev'] = re.findall("Faj(\d)",s)
return(elements)
Вывод:
In [18]: [find_elements(s) for s in [s1,s2]]
Out[18]:
[{'alnev': ['12345.1', '678910.11'], 'nev': ['1', '2']},
{'alnev': ['121314.15', '161718.19', '20212223.24'], 'nev': ['3', '4', '5']}]
Как отступление: словарь может содержать что угодно, от одного значения до других словарей, списков, фреймов данных - вы называете это. Таким образом, вы можете назначить список ключевым словарём.