我尝试将这一步骤合而为一,但这没有用
w = re.sub('[0-9]', r'9', w)
w = re.sub('[A-Z]', r'X', w)
w = re.sub('[a-z]', r'x', w)
有人知道如何使用XXxxxx999
-> Xx9
之类的字符串来制作。
答案 0 :(得分:2)
您可以使用回调方法作为替换参数,例如:
import re
rx = r'([0-9]+)|([A-Z]+)|[a-z]+'
w = "XXxxxx999"
def repl(m):
if m.group(1): # if ([0-9]) matched
return '9' # replace with 9
elif m.group(2): # if ([A-Z]) matched
return 'X' # replace with X
else: # if ([a-z]) matched
return 'x' # replace with x
print(re.sub(rx, repl, w)) # => Xx9
请参见Python demo。
正则表达式匹配:
([0-9]+)
-第1组:1个以上数字|
-或([A-Z]+)
-第2组:1个以上大写字母|
-或[a-z]+
-1个以上小写字母。