我想计算字符串"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)
答案 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)