2013-04-30 2 views
0

Я сейчас столкнулся с такой проблемой. Я прочитал несколько веб-классов и Dive Into Python по регулярному выражению, и ничего не нашел в моей проблеме, поэтому я не уверен, что этого можно достичь.Поиск максимального значения float в строке - регулярное выражение

Учитывая эту Dict Двойник строку:

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

Я хотел бы сравнить значения в скобках в соответствующих положениях и принимать только один наибольший. Таким образом, сравнение 11.76, 11.76, 11.91 должно привести к 11.91.

Моя альтернатива - получить все значения и сравнить их впоследствии, но мне интересно, может ли регулярное выражение справляться?

+2

вам нужно решение регулярного выражения? – jamylak

+0

Я имею в виду все, что будет работать, было бы здорово. – nutship

+0

Я имею в виду, что уже выглядит как диктофон, вы можете просто преобразовать его в один. – jamylak

ответ

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 
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] 
+0

Дай мне то, что ты пьешь. Jamylak xd Это отличный материал снова. Вы читали книги на python или изучали код, в основном читающий сайты, такие как stackoverflow? – nutship

+0

Это не будет сравнивать значения в соответствующих позициях - оно сравнивает все значения. Из вопроса я понял, что OP хочет получить ответ типа '[11.91, 7.19]' – Dhara

+0

@nutship. (SO, Python docs). Вам также нужно получить максимальный от каждого блока? – jamylak

Смежные вопросы