在不使用re.findall

时间:2018-09-18 04:25:34

标签: python

我在这里有一个字符串:

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

2 个答案:

答案 0 :(得分:3)

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

代码:

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

测试代码:

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

结果:

17

答案 1 :(得分:-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