python - 如何从 l=string 中提取 0207 而不是 207?
问题描述
让用户输入为 0207a97,使用 re 207 从列表中提取而不是 0207
str = input()
l = [int(i) for i in re.findall('\d+',str) if '9' not in i]
if len(l)>0:
print(max(l))
解决方案
您可以使用
import re
s = "0207a97"
l = [(int(i), i) for i in re.findall('\d+',s) if '9' not in i]
if len(l)>0:
print(max(l, key=lambda x: x[0])[1]) # => 0207
请参阅Python 演示。即获取第一项为整数值,第二项为匹配字符串值的元组列表,然后仅比较第一项得到最大值,并打印找到的元组的第2项。
或者,您可能仍然只是获取re.findall(r'\d+', s)
结果列表并使用key
参数 with max
。将其设置为int
,列表中的值将作为整数进行比较:
l = [i for i in re.findall('\d+',s) if '9' not in i]
if len(l)>0:
print(max(l, key=int))
查看另一个 Python 演示。从文档:
key指定一个参数的函数,用于从iterable中的每个元素中提取比较键(例如,
key=str.lower
)。默认值为None
(直接比较元素)。
推荐阅读
- html - Spring Boot 应用程序错误 400 POST 上的错误请求
- angular - 如何禁用角度 p 日历中的过去日期?
- python - 如何查找加载 .txt 文件时发生的 IndexError 的原因并解决?Python
- javascript - 如何根据 React 中的用户角色显示表格行
- java - 在即时应用程序中使用复古合身和截击时出现错误响应
- time - 延时图,单系列,有时间延迟
- linked-list - 链表练习标记方案错误
- objdump - 了解 RiscV objdump
- php - jQuery bootgrid:将 PHP 变量传递给 AJAX
- python - 如何打印嵌套在字典中的字典中的所有内容