Я новичок в python, пытаюсь познакомиться с регулярными выражениями и обработкой строк.Я написал регулярное выражение, по которому числа в строке идентифицируются и извлекаются в массив.
Мне нужен параллельный массив, который содержит позиции найденных терминов.
Для пояснения предположим, что основная строка:
text = '11 scholars are selected to comptete on Feb 20 , 2019.
Afterwards, 11 professors will review their submitted work.
The results will be announced on Mar 20 , 2019.'
Как я уже сказал, я могусоответствует nums = ['11', '20', '2019', '11', '20', '2019']
из строки выше.Теперь я хочу сформировать синхронизированный массив, в котором хранятся позиции каждого из этих чисел.Я использую следующий фрагмент:
positions = []
for num in nums:
pos = text.find(num)
positions.append(num + ' : ' + str(pos))
Массив положений содержит: positions = ['11 : 0', '20 : 44', '2019 : 49', '11 : 0', '20 : 44', '2019 : 49']
, что явно не то, что я хочу.Поскольку в списке есть повторяющиеся числа (например, два 11 или 12), text.find(num)
возвращает первое вхождение термина.Таким образом, когда программа достигает следующего вхождения токена, она возвращает позицию первого вхождения.
Есть мысли о том, как это исправить?