Python,上下文敏感字符串替换

| 是否可以使用正则表达式在Python中执行类似的操作?   将字符串中数字中的每个字符加1 因此输入“ 123ab5”将变为“ 234ab6” 我知道我可以遍历字符串并手动递增每个字符(如果它是一个数字),但这似乎是不合逻辑的。 注意。这不是功课。我已经将我的问题简化到听起来像是一项家庭作业。     
已邀请:
a = \"123ab5\"

b = \'\'.join(map(lambda x: str(int(x) + 1) if x.isdigit() else x, a))
要么:
b = \'\'.join(str(int(x) + 1) if x.isdigit() else x for x in a)
要么:
import string
b = a.translate(string.maketrans(\'0123456789\', \'1234567890\'))
在以下任何一种情况下:
# b == \"234ab6\"
编辑-前两个将
9
映射到
10
,最后一个将其包装到
0
。要将前两个数字包装为零,您必须将
str(int(x) + 1)
替换为
str((int(x) + 1) % 10)
    

>>> test = \'123ab5\'
>>> def f(x):
        try:
            return str(int(x)+1)
        except ValueError:
            return x
 >>> \'\'.join(map(f,test))
     \'234ab6\'
    
>>> a = \"123ab5\"
>>> def foo(n):
...     try: n = int(n)+1
...     except ValueError: pass
...     return str(n)
... 
>>> a = \'\'.join(map(foo, a))
>>> a
\'234ab6\'
通过一个简单的if或try-catch eumiro解决方案以及join + map的方式对我来说也是更pythonic的解决方案     

要回复问题请先登录注册