为什么 Python 中的这段代码无法识别字符串中的数字?

Why this code in Python doesn't recognize the number from a string?

我有一个字符串,我需要将数字提取到该字符串中。 “数字”中有一个逗号。如果我删除逗号,该功能将起作用,但如果我保留它,则该功能将不起作用。我需要使用逗号的功能。我不知道为什么,这里的逗号有问题。

如果有人告诉我为什么逗号有问题,我将不胜感激。 提前致谢!

def get_numbers(text):
     num = [int(i) for i in text.split() if i.isdigit()]
     print(num)

get_numbers("16,645")

您可以遍历 text

而不是尝试拆分文本

代码1:

def get_numbers(text):
    num = [int(i) for i in text if i.isdigit()]
    print(num)

get_numbers("16,645")

或者如果你真的想在逗号处拆分字符串。 代码2

def get_numbers(text):
    text = ''.join(text.split(','))
    num = [int(i) for i in text]
    print(num)

get_numbers("16,645")

您需要删除 split() 方法,这样您的代码将如下所示:

def get_numbers(text):
     num = [int(i) for i in text if i.isdigit()]
     print(num)

get_numbers("")

text.split() 将 return ['16,645'],这是您不想要的。当你想用白色 space 分隔字符串时使用它(例如,space、制表符、换行符)。

在这种情况下,text 字符串是您迭代的迭代器。在列表理解的每个循环开始时,text 中的值将分配给 i.

split 方法正在返回 ['16,645'];一个包含一个字符串的列表,这显然不是一个数字。

你应该在没有 split 的情况下使用它:

def get_numbers(text):
   num = [int(i) for i in text if i.isdigit()]
   print(num)

get_numbers("16,645")