python:正则表达式:替换字符串的问题

比如这个字符串5+7+12+32,我想把它里面的单个的数字(5和7),替换为55和77即55+77+12+32事实上我这么写代码importrea=re.compile(... 比如这个字符串 5+7+12+32,我想把它里面的单个的数字(5和7),替换为55和77
即 55+77+12+32
事实上我这么写代码
import re
a = re.compile('(?<!\d)\d(?!\d)')
s = '5+7+12+32'
print a.sub(a.search(s).group()*2,s)
结果却输出55+55+12+32
不知道如何使用正则表达式实现 将类似这种字符串(只含有数字和加号)中单个数字替换为重复的数字?
我想到了呢
import re
a = re.compile('(?<!\d)\d(?!\d)')
s = '5+74564+1+2'
while a.search(s):
s = a.sub(a.search(s).group()*2,s,1)
print s
展开
 我来答
Kitaisky
2011-07-07 · TA获得超过2683个赞
知道小有建树答主
回答量:3065
采纳率:0%
帮助的人:1191万
展开全部
你的正则没有错...但这属于 Dynamic Regex Replacement 了

python 我是不太会,但你要用正则在查询替代的同时执行code,这个恐怕只有 perl 能够做到...

1. perl -le '$ARGV[0]=~s/(?<!\d)(\d)(?!\d)/$1 x 2/eg; print $ARGV[0]' "5+7+12+32"
## 55+77+12+32

2. perl -le '$ARGV[0]=~s/\b(\d)\b/$1 x 2/eg; print $ARGV[0]' "5+7+12+32"
道法自然RAM
2011-07-06 · TA获得超过2869个赞
知道大有可为答主
回答量:2954
采纳率:33%
帮助的人:1857万
展开全部
a='5+7+12+32'
list1=a.split('+')
list2 = []
for i in list1:
if len(i)==1:
list2.append(i+i)
else:
list2.append(i)

for i in list2:
....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blacklong
2011-07-06 · TA获得超过1501个赞
知道大有可为答主
回答量:2745
采纳率:0%
帮助的人:1256万
展开全部
用循环,找到一个,替换一下,再找下一个,再替换。一步到位的话,只能用替换函数了。python支持吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
macru
2011-07-06 · TA获得超过172个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:187万
展开全部
s = '5+7+12+32'
print '+'.join((len(i)==1 and i*2 or i) for i in s.split('+'))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式