Найти число в строке с помощью Python - PullRequest
0 голосов
/ 16 февраля 2012

Я работаю над функцией 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 ]

2 голосов
/ 16 февраля 2012
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 голосов
/ 16 февраля 2012

Если вы предпочитаете решение без регулярных выражений:

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)
2 голосов
/ 16 февраля 2012

На мой взгляд, лучший способ сделать это - использовать re.sub для замены.

В частности, обратите внимание, что аргумент repl может быть вызываемым, поэтому было бы очень легко написать функцию, которая добавляет его к целому числу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...