使用python在字符串上查找数字

时间:2012-02-15 23:16:50

标签: python string

我正在研究python函数。我有一个给定的字符串,我需要找到该字符串上是否有数字,然后将1添加到该数字。 (任何数字从1到100)。

我找到了“查找”或“计数”功能,但他们所做的(据我所知)是找到一个特定的字母或数字。在我的功能上,我不知道我在寻找哪个号码,所以我不知道如何使用这些功能。

示例1:

# WHAT I HAVE    
string = "STRING 2"
# WHAT I WANT AS A RESULT
STRING 3

示例2:

# WHAT I HAVE
string = "STRING 9 STRING"
# WHAT I WANT AS A RESULT
STRING 10 STRING

有谁知道怎么做? 非常感谢!

3 个答案:

答案 0 :(得分:2)

在我看来,最好的方法是使用re.sub进行替换。

特别要注意,repl参数可以是可调用的,因此编写一个向整数添加一个的函数会非常容易。

答案 1 :(得分:2)

import re

def increment_repl(match):
    return str(int(match.group(0)) + 1)

def increment_ints(s):
    return re.sub(r'-?\d+', increment_repl, s)

>>> increment_ints("STRING 2")
'STRING 3'
>>> increment_ints("STRING 9 STRING")
'STRING 10 STRING'
>>> increment_ints("-1 0 1 2")
'0 1 2 3'

答案 2 :(得分:2)

如果您更喜欢无正则表达式解决方案:

string = "STRING 9 STRING"

def increment(val):
    if val.isdigit():
        return str(int(val) + 1)
    return val

newstring = [increment(i) for i in string.split()]
print " ".join(newstring)