查找字符串中float的最大值 - 正则表达式

时间:2013-04-30 11:17:02

标签: python regex python-2.7

我现在面临这样的挑战。我已经阅读了一些关于正则表达式的Web类和Dive Into Python而我在我的问题上找不到任何东西,因此我不确定这是否有可能实现。

鉴于这个类似dict的字符串:

"Mon.":[11.76,7.13],"Tue.":[11.76,7.19],"Wed.":[11.91,6.94]

我想比较相应位置的括号中的值,只取最大值。因此,比较11.7611.7611.91应该会产生11.91

我的另一种选择是获取所有值并在之后进行比较,但我想知道正则表达式是否可以应对?

2 个答案:

答案 0 :(得分:3)

>>> import ast
>>> text = '''"Mon.":[11.76,7.13],"Tue.":[11.76,7.19],"Wed.":[11.91,6.94]'''
>>> rows = ast.literal_eval('{' + text + '}').values()
>>> [max(col) for col in zip(*rows)]
[11.91, 7.19]

答案 1 :(得分:1)

试试这个:

import re

text = '''"Mon.":[11.76,7.13],"Tue.":[11.76,7.19],"Wed.":[11.91,6.94]'''
values = re.findall(r'\[(.*?)\]', text)
values = map(lambda x: x.split(','), values)
values = zip(*values)
print max(map(float, values[0]))
print max(map(float, values[1]))

输出:

11.91
7.19