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

问题描述

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

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

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() 将返回您不想要的 ['16,645']。当您想用空格分隔字符串时使用它(例如,空格、制表符、换行符)。

在这种情况下,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")