2010-10-07 4 views
0

Эй, ребята, я хочу, чтобы выполнить следующую операцию:сочетающие строки с помощью строки подстановки - питон

b = 'random' 

c = 'stuff' 

a = '%s' + '%s' %(b, c) 

, но я получаю следующее сообщение об ошибке:

TypeError: not all arguments converted during string formatting 

делает любой из вас знают, чтобы сделать так ?

+0

Почему бы не 'b + c'? – kennytm

+0

lol, неважно, я только что понял, тупая ошибка: D – Paulo

+0

Я пытался использовать спецификатор формата% s, но я забыл, что% b% c, совпадает с b + c – Paulo

ответ

1

В зависимости от того, что вы хотите:

>>> b = 'random' 
>>> c = 'stuff' 
>>> a = '%s' %b + '%s' % c 
>>> a 
'randomstuff' 
>>> 

>>> b + c 
'randomstuff' 
>>> 
>>> z = '%s + %s' % (b, c) 
>>> z 
'random + stuff' 
>>> 
+0

wow, спасибо, ребята, я не знал о части приоритета, я закончил это так: a = '% b% c'% (b, c) – Paulo

+0

@paulo: Если все, что вы делаете, это конкатенация строк , * пожалуйста * просто используйте '+'. Простой и понятный. –

+0

@Nick T: @paulo: Причина, я просто показал, что различные примеры заключались в том, что цель данного кода не была ясна. Имеются советы в различных ответах и ​​комментариях. Если вы конкатенируете, сделайте это напрямую, для форматирования используйте подход «%» и даже лучше «формат», как было предложено sdolan. – pyfunc

4
'%s%s' % (b, c) 

или

b + c 

или Newstyle format путь

'{0}{1}'.format(a, b) 
1

Благодаря старшинство операторов, ваша программа первой попытке подставить b и c во второй «% s». Поэтому расщепление таких строк на + бессмысленно, лучше делать a = '%s %s' % (b,c)

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