Предизвикателства > Регекс за Дядо Коледа > Решения > Решението на Михаил Цанков

Резултати
2 точки от тестове
2 точки от учител

4 точки общо

3 успешни теста
0 неуспешни теста
Код
Скрий всички коментари

 1import re
 2
 3
 4def parse_wishlist(data):
 5    christmas_magic = re.compile(r'\(\s*(-?[\.\d]*)\s*\)\s*(.*?(?=\s+\[)).*\[\s*(\d+)|[-\*].*?(?=[^\s])(.*?(?=\s*(?:\n|$)))')
 6    parsed_data = christmas_magic.findall(data)
 7
 8    wishlist = []
 9    for row in parsed_data:
10        if row[3] == '':
11            wishlist.append([float(row[0]), row[1], int(row[2]), []])
12        else:
13            wishlist[-1][-1].append(row[3])
14
15    return list((item[0], item[1], item[2], tuple(item[3])) for item in wishlist)

...
----------------------------------------------------------------------
Ran 3 tests in 0.003s

OK

Дискусия
История

f1import ref1import re
22
33
4def parse_wishlist(data):4def parse_wishlist(data):
5    christmas_magic = re.compile(r'\(\s*(-?[\.\d]*)\s*\)\s*(.*?(?=\s+\[)).*\[\s*(\d+)|[-\*].*?(?=[^\s])(.*?(?=\s*(?:\n|$)))')5    christmas_magic = re.compile(r'\(\s*(-?[\.\d]*)\s*\)\s*(.*?(?=\s+\[)).*\[\s*(\d+)|[-\*].*?(?=[^\s])(.*?(?=\s*(?:\n|$)))')
n6    data = christmas_magic.findall(data)n6    parsed_data = christmas_magic.findall(data)
77
8    wishlist = []8    wishlist = []
t9    for row in data:t9    for row in parsed_data:
10        if row[3] == '':10        if row[3] == '':
11            wishlist.append([float(row[0]), row[1], int(row[2]), []])11            wishlist.append([float(row[0]), row[1], int(row[2]), []])
12        else:12        else:
13            wishlist[-1][-1].append(row[3])13            wishlist[-1][-1].append(row[3])
1414
15    return list((item[0], item[1], item[2], tuple(item[3])) for item in wishlist)15    return list((item[0], item[1], item[2], tuple(item[3])) for item in wishlist)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op