如何从l = string而不是207中提取0207?

时间:2019-06-28 11:35:49

标签: python regex

让用户输入为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))

4 个答案:

答案 0 :(得分:3)

您可以使用

var products = [Product]() //use this as dataSource of the tableView
var names = [String]()
var prices = [Double]()

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let product = self.products[indexPath.row]
    self.names.append(product.name)
    self.prices.append(product.price)
}

请参见Python demo。也就是说,获取元组列表,其中第一项为整数值,第二项为匹配的字符串值,然后仅将第一项进行比较就获得最大值,并打印找到的元组的项2。

或者,您仍然可能只得到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 结果列表,并使用re.findall(r'\d+', s)的{​​{1}}参数。将其设置为key,列表中的值将作为整数进行比较:

max

请参见another Python demo。来自docs

  

key 指定一个参数的功能,该参数用于从 iterable 中的每个元素(例如int)中提取比较关键字。默认值为l = [i for i in re.findall('\d+',s) if '9' not in i] if len(l)>0: print(max(l, key=int)) (直接比较元素)。

答案 1 :(得分:0)

在屏幕上打印后,您可以添加前导零。您可以阅读以下内容以得到更好的说明:https://stackoverflow.com/a/13499182

答案 2 :(得分:0)

如果我们要在字符串中捕获非九个起始数字,则可能会简单地返回:

import re

print(re.match("^([0-8]+)", "0207a97").group(1))

输出

0207

答案 3 :(得分:-1)

import re
a='0207a97'
a1=re.findall('(\d+)',a)
a1[0] #output - 0207
a1[1] #output - 97

这将为您提供输出列表。您可以根据需要修改列表。