我现在面临这样的挑战。我已经阅读了一些关于正则表达式的Web类和Dive Into Python而我在我的问题上找不到任何东西,因此我不确定这是否有可能实现。
鉴于这个类似dict的字符串:
"Mon.":[11.76,7.13],"Tue.":[11.76,7.19],"Wed.":[11.91,6.94]
我想比较相应位置的括号中的值,只取最大值。因此,比较11.76
,11.76
,11.91
应该会产生11.91
。
我的另一种选择是获取所有值并在之后进行比较,但我想知道正则表达式是否可以应对?
答案 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