Форум сайта python.su
0
чуть подкорректирую задание:
есть некая строка “SHR16,WTS1234, ACDW14, WTS16, WTS72, ACDW485, SHR728”
есть некий шаблон(он может изменяться): “WTS, ACDW, SHR”
Нужно отсортировать исходную строку в зависимости от того, какой шаблон.
Т.е., в результате должно получиться:
“WTS16, WTS72, WTS1234, ACDW14, ACDW485, SHR16, SHR728 ”
Офлайн
0
import re str = 'SHR16,WTS1234, ACDW14, WTS16, WTS72, ACDW485, SHR728' # исходная строка order = ['WTS', 'ACDW', 'SHR'] # порядок сортировки order = order + [re.sub('\d', '', s.strip()) for s in str.split(',')] # страхуемся от эксепшенов - это на ваш вкус # собственно сортировка print(', '.join(sorted([s.strip() for s in str.split(',')], cmp=lambda x,y: cmp('%09d-%09d' % (order.index(re.sub('\d', '', x)), int(re.sub('\D', '', x))), '%09d-%09d' % (order.index(re.sub('\d', '', y)), int(re.sub('\D', '', y)))))))
Офлайн
Не прошло и 4х страниц и мы узнали правильное тз, ура. На сортироку с шаблоном думаю пост #9 почитаемее будет. Хотя тс может возмутиться, что в примерах шаблоны- кортеж/список, а у него- нет!
Офлайн
0
sank, спасибо огромное)
вы-просто волшебник)
Офлайн
857
sergeekруками ничего не добавляется
придется добавлять этого руками(если вообще заранее известно что добавлять). Если же она именно такая, тогда уже проще будет написать
Отредактировано py.user.next (Янв. 10, 2013 00:03:21)
Офлайн