Skip to content Skip to sidebar Skip to footer

Re.sub How To Do It In One Step?

I try to put this steps in one, but it doesnt work w = re.sub('[0-9]', r'9', w) w = re.sub('[A-Z]', r'X', w) w = re.sub('[a-z]', r'x', w) Does anybody knows how to make from such

Solution 1:

You may use a callback method as a replacement argument like this:

import re

rx = r'([0-9]+)|([A-Z]+)|[a-z]+'
w = "XXxxxx999"defrepl(m):
    if m.group(1):       # if ([0-9]) matchedreturn'9'# replace with 9elif m.group(2):     # if ([A-Z]) matchedreturn'X'# replace with Xelse:                # if ([a-z]) matchedreturn'x'# replace with xprint(re.sub(rx, repl, w)) # => Xx9

See the Python demo.

The regex matches:

  • ([0-9]+) - Group 1: 1+ digits
  • | - or
  • ([A-Z]+) - Group 2: 1+ uppercase letters
  • | - or
  • [a-z]+ - 1+ lowercase letters.

Post a Comment for "Re.sub How To Do It In One Step?"