strinfo = 'a><=bnj' def strfun(x): #非字母 如果只是>,<,+,可以在此处用if直接判断; if x.isalpha() != True: return '1{0}1'.format(x) else: return x m = map(strfun, list(strinfo)) print(''.join(list(m)))
。。我就是想用正则写的简单点
@DoubleT: isalpha() 函数可以直接判断是字母还是非字母
既然匹配到了,用 re.sub() 替换下应该可以吧~
采用引用分组替换的方式就可以了。
如果非要替换数字,那么可以采用命名分组或者用一个函数返回替换。
直接用\数字
引用分组也可以。不冲突的情况下。
以下是4种实现方法我全写了。
import re
test = "a><=bnj"
result = re.sub("(<|>|=)", r"#\1#", test)
print(result)
result = re.sub("(?P<py交易>[<>=])", "1\g<py交易>1", test)
print(result)
def py交易(matchobj):
return "1" + matchobj.group(1) + "1"
result = re.sub("([<>=])", py交易, test)
print(result)
py交易 = lambda matchobj: "1" + matchobj.group(1) + "1"
result = re.sub("([<>=])", py交易, test)
print(result)