python re.sub 进行整数操作
我现在有一个模式替换,它的功能是这样的:
x = re.sub('(\d+)','\g<1>','100')
=> x = 100
我需要在替换过程中把一个整数除以10,因为这个模式和替换内容都是从数据库的文本字段中输入的(所以我不能直接用代码)。有没有办法做到这一点,让 => x = 10 呢?
谢谢,
理查德
3 个回答
1
你可以通过将一个函数作为第二个参数传递给 re.sub 来实现这个功能。这个函数会接收到一个叫做 MatchObject 的对象。
>>> def repl(mo):
... return mo.group(0)[:-1]
...
>>> import re
>>> re.sub('\d+', repl, '100')
'10'
1
re.sub 可以把一个函数作为第二个参数。
import re
def func(r):
return str(int(r.group(0)) / 10)
x = re.sub("\d+", func, "100")
print x
6
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'
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。