检查字符串是否包含数字并返回数字

Vas*_*tos 1 python string integer

我正在使用 python 并且我有一个字符串变量foo = " I have 1 kilo of tomatoes " 我想要的是检查我的字符串是否包含一个整数(在我们的例子中为 1 )并返回特定的整数我知道我可以使用 isdigit 函数,例如:

def hashnumbers(inputString):
    return any(char.isdigit() for char in inputString)
Run Code Online (Sandbox Code Playgroud)

但它返回 true 或 false 并且不存储数字。我很感激你的帮助。先感谢您 。

azr*_*zro 5

  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']
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果没有找到数字,则返回默认值(空列表被评估为 False)

    return [char for char in inputString if char.isdigit()] or None
    
    Run Code Online (Sandbox Code Playgroud)
  3. 正则表达式版本 re.findall

    return re.findall(r"\d", inputString) 
    return re.findall(r"\d", inputString) or None
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)