蟒蛇。在字符串中查找最大整数

时间:2014-02-04 04:50:00

标签: string python-2.7

编写函数largestNumber(text),它接受一个文本字符串并返回该文本中出现的最大int值,如果没有这样的值,则返回None。例如:

largestNumber("I saw 3 dogs, 17 cats, and 14 cows!")

返回17(int值17,而不是字符串“17”)。

largestNumber("One person ate two hot dogs!")

返回None(值None,不是字符串“None”)。

我尝试使用isdigit函数来分隔整数但是如何比较字符串?

6 个答案:

答案 0 :(得分:1)

您可以尝试使用正则表达式,然后使用maxmap函数:

result = [e for e in re.split("[^0-9]", "I saw 3 dogs, 17 cats, and 14 cows!") if e != '']

# list 'result' elements are strings: ['3', '17', '14'], so we use map(int, list) to get integers
print max(map(int, result))

答案 1 :(得分:0)

def findLargestNumber(text):
    front = -1
    li = []

    for i in range(len(text)):
        if front == -1:
            if text[i].isdigit():
                front = i
            else:
               continue
        else:
            if text[i].isdigit():
               continue
            else:
                li.append(int(text[front:i+1]))
                front = -1

return max(li)

print findLargestNumber('我看到3只狗,17只猫和14只牛!')

答案 2 :(得分:0)

另一种解决方案:

def findLargestNumber(text):
    ls = list()
    for w in text.split():
        try:
            ls.append(int(w))
        except:
            pass
    try:
        return max(ls)
    except:
        return None

print findLargestNumber('I saw 3 dogs, 17 cats, and 14 cows!')
print findLargestNumber('I saw ')

输出:

17
None

答案 3 :(得分:0)

import re
def extractmax(str1):
    nums=re.findall("\d+",str1)
    return max(nums)

\ d +用于查找长度大于1的十进制数或数字,将其添加到nums数组中,如果生成,则最终从nums中获取最大值

答案 4 :(得分:0)

您也可以这样做

def largestNumber(in_str):
    l=[int(x) for x in in_str.split() if x.isdigit()]
    return max(l) if l else None

首先,您用in_str根据空间()拆分split()以获得列表。

此列表中的“数字”使用isdigit()标识,并使用int()转换为整数。

这些数字作为列表存储在l中。

表达式

max(l) if l else None
如果l不为空,则{p>将给出l中的最大值,否则为None


print(largestNumber("I saw 3 dogs, 17 cats, and 14 cows!"))

给予

17

print(largestNumber("One person ate two hot dogs!"))

给予

None

答案 5 :(得分:0)

以下对我有用,而且效果很好! 增加字符串中的数字,然后打印出字符串中的最大数字

<块引用>
  1. 重新导入
import re
<块引用>
  1. 增加字符串中的数字
name = "name 1"
number = re.search(r'\d+', str(name))

if number:
rx = r'(?<!\d){}(?!\d)'.format(number.group())
    prefix = re.sub(rx, lambda x: str(int(x.group()) + 1), name)
    print(prefix)
<块引用>

而不是直接打印这一行“re.sub(rx, lambda x: str(int(x.group()) + 1), name)”

<块引用>

将它存储在一个变量中,在我的例子中是前缀

那是因为您将获得字符串中的更新值而不是原始值

<块引用>

将递增的变量“name”存储到列表中

li = [int(prefix[5:])]
print("Largest name", max(li))

请记住,索引 5 是数字的起始位置,您可能需要根据字符串长度对其进行调整

可以尝试制作2个变量,看看max方法是否正常