python re.sub 进行整数操作

1 投票
3 回答
3243 浏览
提问于 2025-04-16 15:34

我现在有一个模式替换,它的功能是这样的:

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'

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答