Python中有没有好的方法来统计整数和非整数的数量?

问题描述 投票:0回答:2

我目前正在尝试用 python 编写一些代码,您可以在其中以字符串形式输入一个句子,它会告诉您有多少是整数,有多少不是。

例如,如果我要输入句子“2014 年,我们用 3 个完整的馅饼庆祝 3.14”,我将需要两个单独的输出来告诉我有 2 个整数和 1 个非整数

坦率地说,在计算输入中有多少个数字后,我陷入了困境

def integer_count(entry):
  num_integers = len(re.findall((r'\d+'), entry))
  return(num_integers)

我想如果我能找出一个数字有多少次不是整数,我可以用它来给我这个数字并从其余数字中减去它,但我也找不到。

我多次尝试计算有多少个数字,我一直在使用正则表达式,但找不到一种方法让它与其他任何东西一起工作

我在理论上知道如何做到这一点,但在实践中我完全不知道如何做到这一点,每次我搜索答案时,它几乎总是给我如何找到数字小数位的结果,而不是我的结果我在找

python integer decimal
2个回答
0
投票

扫描每个字符,然后尝试将其转换为整数。对于数字以外的字符(空格、逗号、点等),除了块将重置数字变量。 您可能需要修改以下代码以忽略浮点数。我的以下解决方案将拆分浮动。 根据我的个人经验,还建议使用正则表达式处理很长的字符串或大量数据会减慢代码执行速度。在必要的索引处进行切割可能会加快速度。

number = ""
for char in sentence:
    try:
        int(eachChar)
        number = number + eachChar
    except:
        number = ""

0
投票

如果您知道所有内容都将以空格分隔,那么我会使用

split
将其分隔为标记并检查
.
字符。

def integer_count(entry):
    entry_split = entry.split(' ')
    int_count = 0
    decimal_count = 0
    for word in entry_split:
        if '.' in word:
            decimal_count +=1
        elif word.isnumeric():
            int_count +=1
    return (int_count, decimal_count)
print(integer_count("hello world 1 2 2.3"))

如果这对你不起作用,我会做一个正则表达式来寻找

int_count = len(re.findall((r'\d+'), word))
decimal_count = len(re.findall((r'\d+.d+'), word))
return int_count-decimal_count`

只要有人还没有投入

hello 2.3.3
也可能会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.