Ответ 1
Python re.findall
должен работать для вас.
import re
s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')
for (letters, numbers) in re.findall(pattern, s):
print(numbers, '*', letters)
Это должно быть проще, чем то, с чем я сталкиваюсь. Моя проблема заключается в том, что строка выглядит так:
ABC12DEF3G56HIJ7
в
12 * ABC
3 * DEF
56 * G
7 * HIJ
И я не могу, для своей жизни, создать правильный набор циклов с использованием соответствия REGEX. Суть проблемы в том, что код должен быть полностью общим, потому что я не могу предположить, как долго будут фрагменты [A-Z]
, и как долго будут [0-9]
фрагменты.
Спасибо за помощь!
Python re.findall
должен работать для вас.
import re
s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')
for (letters, numbers) in re.findall(pattern, s):
print(numbers, '*', letters)
Лучше использовать re.finditer, если ваш набор данных большой:
import re
s = "ABC12DEF3G56HIJ7"
pattern = re.compile(r'([A-Z]+)([0-9]+)')
for m in re.finditer(pattern, s):
print m.group(2), '*', m.group(1)