В настоящее время у меня есть подстановка шаблона, которая делает следующее:
x = re.sub('(\d+)','\g<1>','100')
=> x = 100
Мне нужно разделить целое число на 10 в подстановке, так как шаблон и подстановка - это входы из текстовых полей базы данных (поэтому я не могу использовать код). Есть ли способ сделать это так, чтобы = > x = 10
Спасибо, Ричард
import re
t = 'a b c 100 200'
f = lambda x: str(int(x.group(0)) / 10)
re.sub('\d+', f, t)
# returns 'a b c 10 20'
вы можете сделать это, передав функцию в качестве второго аргумента для re.sub. Эта функция будет вызываться с помощью объекта MatchObject:
>>> def repl(mo):
... return mo.group(0)[:-1]
...
>>> import re
>>> re.sub('\d+', repl, '100')
'10'
re.sub может принимать функцию как второй параметр.
import re
def func(r):
return str(int(r.group(0)) / 10)
x = re.sub("\d+", func, "100")
print x