编写函数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函数来分隔整数但是如何比较字符串?
答案 0 :(得分:1)
您可以尝试使用正则表达式,然后使用max
和map
函数:
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)
以下对我有用,而且效果很好! 增加字符串中的数字,然后打印出字符串中的最大数字
<块引用>import re
<块引用>
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方法是否正常