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 展开
即 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 展开
4个回答
展开全部
你的正则没有错...但这属于 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"
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"
展开全部
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:
....
list1=a.split('+')
list2 = []
for i in list1:
if len(i)==1:
list2.append(i+i)
else:
list2.append(i)
for i in list2:
....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用循环,找到一个,替换一下,再找下一个,再替换。一步到位的话,只能用替换函数了。python支持吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s = '5+7+12+32'
print '+'.join((len(i)==1 and i*2 or i) for i in s.split('+'))
print '+'.join((len(i)==1 and i*2 or i) for i in s.split('+'))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询