проверить, содержит ли строка число и вернуть число - PullRequest
0 голосов
/ 17 июня 2020

Я использую python, и у меня есть строковая переменная foo = " I have 1 kilo of tomatoes " Я хочу проверить, содержит ли моя строка целое число (в нашем случае 1), и вернуть определенное c целое число, которое я знаю, что могу использовать функция isdi git, например:

def hashnumbers(inputString):
    return any(char.isdigit() for char in inputString)

Но она возвращает истину или ложь и не сохраняет число. Буду признателен за вашу помощь. Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 17 июня 2020
  1. List Comprehension: вернуть цифры

    Чтобы вернуть цифры, используйте понимание списка с if

    def hashnumbers(inputString):
        return [char for char in inputString if char.isdigit()]
    
    print(hashnumbers("super string"))    # []
    print(hashnumbers("super 2 string"))  # ['2']
    print(hashnumbers("super 2 3 string")) # ['2', '3']
    
  2. Вернуть значение по умолчанию, если цифры не найдены (пустой список оценивается как False)

    return [char for char in inputString if char.isdigit()] or None
    
  3. Версия с регулярным выражением с re.findall

    return re.findall(r"\d", inputString) 
    return re.findall(r"\d", inputString) or None
    
  4. Возврат первый только

    def hashnumbers(inputString):
        return next((char for char in inputString if char.isdigit()), None)
    
    print(hashnumbers("super string"))    # None
    print(hashnumbers("super 2 string"))  # 2
    print(hashnumbers("super 2 3string")) # 2
    
2 голосов
/ 17 июня 2020

Ваш вопрос немного неясен, но я предположил следующее:

  • Вы хотите, чтобы ваша функция возвращала true или false. Не число
  • Вы хотите, чтобы функция печатала любые числа в строке

Если это верно, этот код должен работать:

def hashnumbers(inputString):
    num = False
    for i in inputString:
        if i.isdigit():
            num = True
            print(i)
    return num

Однако, если я неправильно понял, какие функции вы ищете, дайте мне знать, и я исправлю это.

Надеюсь, это поможет.

...