在不使用re.findall的情况下从Python中的字符串中提取整数

问题描述 投票:-1回答:2

我这里有一个字符串:

test = "I saw 3 horses, 17 cat, and 14 rabbits!"

现在,在不使用regexlists的情况下,我尝试从此字符串中提取整数并找到最大整数:

def largestNumber(text):
    largestNumber = 0

    for ii in range(len(text)):
        if text[ii].isdigit():
            if int(text[ii]) > largestNumber:
                largestNumber = int(text[ii])
        else:
            continue

    if noNumber(text):
        return None

    return largestNumber



def noNumber(s):

    for ii in range(len(s)):
        if s[ii].isdigit():
            return False

    return True

不幸的是,如果你一次查看一个数字,这将返回7,这是最大整数!

我如何解决这个问题,以便检测到17而不是7?再次,不使用regexlists

python
2个回答
3
投票

使用拆分字符串上的转换例程,您可以返回最大值。

Code:

def to_int(value):
    try:
        return int(value)
    except ValueError:
        return 0

Test Code:

test = "I saw 3 horses, 17 cat, and 14 rabbits!"
print(max(to_int(i) for i in test.split()))

Results:

17

-1
投票

如果您只对打印感兴趣而不将值存储在列表中:

words = test.split()
big = 0
for i in words:
    if i.isdigit():
        if int(i) > big:
            big = int(i)
        else:
            pass
    else:
        pass

print(big)
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 noregex.py
17
© www.soinside.com 2019 - 2024. All rights reserved.