【问题标题】:check if string contains number and return the number检查字符串是否包含数字并返回数字
【发布时间】:2020-10-06 14:32:34
【问题描述】:

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

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

但它返回真或假并且不存储数字。 感谢您的帮助。提前谢谢你。

【问题讨论】:

  • 如果没有数字,你要返回什么?
  • @azro 我想从上面的字符串 foo 中返回 1 并将其存储在变量中
  • 当给定字符串中有NO位时,返回什么?假的?
  • @azro 我只想检查字符串中是否存在一个数字,是否将其存储在变量中并返回
  • 如果给定字符串中有多个数字怎么办?例如 foo = "我有 1 公斤西红柿和 10 公斤土豆"

标签: python string integer


【解决方案1】:
  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
    

【讨论】:

  • 非常感谢
  • 然而,使用列表理解,如果你的数字是 10,你会得到 ['1' , '0'] 。如何编辑函数以返回 2 位数字?再次感谢
  • @VasilisSkentos re.findall(r"\d+", inputString)
【解决方案2】:

您的问题有点不清楚,但我假设如下:

  • 您希望您的函数返回真或假。不是数字
  • 您希望函数打印字符串中的任何数字

如果正确,这段代码应该可以工作:

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

但是,如果我误解了您要查找的功能,请告诉我,我会修改。

我希望这会有所帮助。

【讨论】:

  • 非常感谢。这是非常有帮助的。我想要的是返回整数
  • 没问题:)
猜你喜欢
  • 2014-03-03
  • 2013-11-20
  • 1970-01-01
  • 2022-06-30
  • 2015-02-07
  • 2010-12-19
  • 2012-11-23
相关资源
最近更新 更多