Я пытаюсь понять метод group
в библиотеке регулярных выражений Python. В этом контексте я пытаюсь выполнять подстановки в строке в зависимости от соответствующего объекта.Строковые подстановки на основе объекта-сопоставления (Python)
То есть, я хочу, чтобы заменить совпавшие объекты (+
и \n
в данном примере) с определенной строкой в my_dict
словаре (с rep1
и rep2
соответственно).
Как видно из этого question и answer, Я попытался это:
content = '''
Blah - blah \n blah * blah + blah.
'''
regex = r'[+\-*/]'
for mobj in re.finditer(regex, content):
t = mobj.lastgroup
v = mobj.group(t)
new_content = re.sub(regex, repl_func(mobj), content)
def repl_func(mobj):
my_dict = { '+': 'rep1', '\n': 'rep2'}
try:
match = mobj.group(0)
except AttributeError:
match = ''
else:
return my_dict.get(match, '')
print(new_content)
Но я получаю None
для t
сопровождаемого IndexError
при вычислении v
.
Любые объяснения и примерный код будут оценены.
Трудно угадать, что ваш код должен делать (есть много синтаксических ошибок, отступы нарушается логика неясна). Лучше вы приводите пример, описывающий то, что вы хотели бы достичь. – TomR8
@ TomR8 Извинения! Я исправил все проблемы синтаксиса и опечатки (надеюсь). –