0

我现在正面临这样的挑战。我在 regex 上阅读了一些网络课程和 Dive Into Python,但在我的问题上没有发现任何内容,因此我不确定这是否可能实现。

给定这个类似字典的字符串:

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

我想比较相应位置括号中的值,只取最大的值。所以比较11.76, 11.76,11.91应该是11.91.

我的替代方法是获取所有值并在之后进行比较,但我想知道正则表达式是否可以应对?

4

2 回答 2

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]
于 2013-04-30T11:20:44.463 回答
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
于 2013-04-30T11:41:08.243 回答