Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2013 16:54:14

medelgover
Зарегистрирован: 2013-09-20
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Строка в инт

Есть строка ‘1,23-25’
Нужно получить 4 числа
1,23,24,25

Как это сделать?

Офлайн

#2 Окт. 16, 2013 18:33:44

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Строка в инт


medelgover
конкретно в данном случае получилось вот так:

mylist = []
line = '1,23-25'
r1, r2 = line.split(",")
mylist.append(int(r1))
s, f = [int(x) for x in r2.replace("-", ",").split(",") ]
mylist.extend(range(s, f+1))
print mylist

но может ответят те кто действительно в python разбирается?

Офлайн

#3 Окт. 16, 2013 19:02:39

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Строка в инт

def make_seq(s):
    for p in s.split(','):
        if '-' in p:
            a, b = p.split('-')
            for i in xrange(int(a), int(b) + 1):
                yield i
        else:
            yield int(p)
print list(make_seq('1,23-25'))

Офлайн

#4 Окт. 16, 2013 19:25:01

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Строка в инт

s0rg
a, b = p.split('-')
и я спасибо скажу

Офлайн

#5 Окт. 17, 2013 07:24:24

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

Строка в инт

Добавлю еще такие варианты, для Python 3.3.2
http://pastebin.com/9CJhdqdA

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version