2009-04-28 2 views

ответ

9

В Python, сопоставляются строки сцепляются:

>>> t = 'a' 'bcd' 
>>> t 
'abcd' 

Так что в вашем втором примере, это эквивалентно:

>>> print '%5s' % ':%2s' % ':' 

, которые по правилам предшествования для оператора Пайтона%, является:

>>> print ('%5s' % ':%2s') % ':' 

или

>>> print ' :%2s' % ':' 
: : 
+0

Но вы остановились на перфомансе: для первоначального утверждения, вероятно, понадобилось «,», чтобы это не происходило. –

+0

@ S.Lott: и это добавит мягкое пространство :) – SilentGhost

+0

Или вместо вставки запятой и добавления мягкого пространства вы можете вставить «+» между первым двоеточием и «% 2s» и получить, вероятно, результат (в словах, потому что я не ожидаю, что это придет к нашему правилу любым другим способом) [четыре пробела] [двоеточие] [одно место] [двоеточие]. –

2

Что вы пытаетесь сделать?

>>> print '%5s' % ':' 
    : 
>>> print '%5s%2s' % (':', ':') 
    : : 

Вы можете достичь того, чего хотите, смешав их оба в одно форматирование строки.

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