如何计算python字符串中的整数数

时间:2017-07-02 14:12:43

标签: python data-structures

我想计算字符串"abajaao1grg100rgegege"中的整数数。 我尝试使用isnumeric(),但它将'100'视为三个不同的整数并显示输出4.我希望我的程序将100视为一个整数。

这是我的尝试:

T = int(input()) 
for x in range(T): 
    S = input() 
    m = 0 
    for k in S: 
        if (k.isnumeric()): 
            m += 1 
print(m)

5 个答案:

答案 0 :(得分:2)

我会使用一个非常基本的正则表达式(\d+)然后计算匹配数:

import re

string = 'abajaao1grg100rgegege'
print(len(re.findall(r'(\d+)', string)))
# 2

答案 1 :(得分:2)

正如其他答案所指出的那样,正则表达式是解决此类问题的首选工具。但是,这是一个使用循环结构而没有正则表达式的解决方案:

result = sum(y.isdigit() and not x.isdigit() for x,y in zip(myString[1:], myString))

此外,这是一个易于理解的迭代解决方案,它也没有使用正则表达式,并且比另一个更清晰,但也更冗长:

def getNumbers(string):
    result = 0
    for i in range(len(string)):
        if string[i].isdigit() and (i==0 or not string[i-1].isdigit()):
            result += 1
    return result

答案 2 :(得分:1)

您可以使用正则表达式库来解决此问题。

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property aggregateRevenue found for type AdDailyDataEntity!

您可以查看该列表中findall返回的数量。

import re
st = "abajaao1grg100rgegege"
res = re.findall(r'\d+', st)

>>> ['1', '100']

要了解有关python正则表达式和模式的更多信息,请输入here

答案 3 :(得分:0)

不是Pythonic,但初学者更容易理解:

循环遍历string和每次迭代中的字符记住was_digit(逻辑变量),如果当前字符是数字 - next iteration。

仅当前一个字符不是数字时才增加计数器

string = 'abajaao1grg100rgegege'
counter = 0                   # Reset the counter
was_digit = False             # Was previous character a digit?

for ch in string:
    if ch.isdigit():
        if not was_digit:     # previous character was not a digit ...
            counter += 1      # ... so it is start of the new number - count it!
        was_digit = True      # for the next iteration
    else:
        was_digit = False     # for the next iteration

print(counter)                # Will print 2

答案 4 :(得分:0)

random="1qq11q1qq121a21ws1ssq1";
counter=0
i=0
length=len(random)
while(i<length):
  if (random[i].isnumeric()):
    z=i+1
    counter+=1
    while(z<length):
      if (random[z].isnumeric()):
        z=z+1
        continue
      else:
        break
    i=z
  else:
    i+=1
print ("No of integers",counter)