2012-05-14 2 views
1

Если c = '32486784298',формат строки питон

затем '{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}'.format(*c)

печатает '324.867.842-98'.

Есть ли простой способ сделать это? (без опра пожалуйста)

+6

Что вы хотите сделать? Если ваша единственная цель - запустить эту точную строку кода, это, вероятно, самый простой способ. В противном случае, что общего вы пытаетесь сделать? – murgatroid99

+0

Эта ссылка может быть полезна: http://stackoverflow.com/questions/1823058/how-to-print-number-with-commas-as-thousands-separators-in-python-2-x – BluePeppers

ответ

3

В последних версиях Python вы можете пропустить номер в заполнителях строки формата:

>>> '{}{}{}.{}{}{}.{}{}{}-{}{}'.format(*c) 
'324.867.842-98' 

Он работает в Python 2.7 ,

+0

+1. Но проблема (и здесь, и в вопросе) заключается в том, что она работает только в очень особой ситуации, когда строка имеет точную длину. – pepr

+0

@pepr Да. И я надеюсь, что это так. В противном случае это вызовет исключение. :) – ovgolovin

0
''.join([c[0:3],'.',c[3:6],'.',c[6:9],'-',c[9:11]) 

ИЛИ

c[0:3]+'.'+c[3:6]+'.'+c[6:9]+'-'+c[9:11] 
+1

Присоединение не работает по двум причинам. 1) Сразу после «.join (есть закрытый (символ) 2). Когда незакрытый [удаляется, возникает ошибка компиляции, говорящая, что объединение принимает один аргумент. – octopusgrabbus

-1
'%s.%s.%s-%s' % tuple(c[i:j] for i, j in ((0, 3), (3, 6), (6, 9), (9, 11))) 
Смежные вопросы