Python,上下文相关字符串替换

2024-04-25 03:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中可以使用正则表达式执行类似的操作吗?在

Increment every character that is a number in a string by 1

所以输入“123ab5”将变成“234ab6”

我知道我可以在字符串上迭代,如果每个字符是一个数字,我可以手动递增每个字符,但这看起来不太和谐。在

注意。这不是家庭作业。我把我的问题简化到一个听起来像家庭作业练习的程度。在


Tags: 字符串innumberstringbythatis数字
3条回答

>>> test = '123ab5'
>>> def f(x):
        try:
            return str(int(x)+1)
        except ValueError:
            return x
 >>> ''.join(map(f,test))
     '234ab6'

a = "123ab5"

b = ''.join(map(lambda x: str(int(x) + 1) if x.isdigit() else x, a))

或:

^{pr2}$

或:

^{pr3}$

在任何情况下:

^{pr4}$

编辑-前两个映射^{cd1>}到^{cd2>},最后一个映射将其包装到^{{cd3>}。要将前两个包为零,必须用^{cd5>}替换^{cd4>}

>>> 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-with-join+map解决方案也是更具python风格的解决方案

相关问题 更多 >