Я работаю над несколькими сотнями документов и пишу функцию, которая найдет конкретные слова и их значения и выдаст список словарей.
Я специально ищу конкретную информацию («город» и число, которое к нему относится).Однако в некоторых документах у меня есть один город, а в других - двадцать, а то и сто, поэтому мне нужно что-то очень общее.
Текстовый пример (скобки запутаны так):
text = 'The territory of modern Hungary was for centuries inhabited by a succession of peoples, including Celts, Romans, Germanic tribes, Huns, West Slavs and the Avars. The foundations of the Hungarian state was established in the late ninth century AD by the Hungarian grand prince Árpád following the conquest of the Carpathian Basin. According to previous census City: Budapest (population was: 1,590,316)Debrecen (population was: 115,399)Szeged (population was: 104,867)Miskolc (population was: 109,841). However etc etc'
или
text2 = 'About medium-sized cities such as City: Eger (population was: 32,352). However etc etc'
Используя регулярное выражение, я нашел искомую строку:
p = regex.compile(r'(?<=City).(.*?)(?=However)')
m = p.findall(text)
Возвращает весь текст в виде списка.
[' Budapest (population was: 1,590,316)Debrecen (population was: 115,399)Szeged (population was: 104,867)Miskolc (population was: 109,841). ']
Так вот, вот где я застрял, и я не знаю, как поступить.Должен ли я использовать regex.findall или regex.finditer?
Учитывая, что количество «городов» в документах различается, я хотел бы получить список словарей.Если я бегу в тексте 2, я получу:
d = [{'cities': 'Eger', 'population': '32,352'}]
Если я бегу в тексте один:
d = [{'cities': 'Szeged', 'population': '104,867'}, {'cities': 'Miskolc': 'population': 109,841'}]
Я действительно ценю любую помощь, ребята!