2013-12-26 2 views
2

Я использую Python и хочу иметь возможность создавать массив, а затем конкатенировать значения со строкой в ​​определенном формате. Я надеюсь, что ниже объяснит, что я имею в виду.Объединить строку со значениями массива

name_strings = ['Team 1', 'Team 2'] 
print "% posted a challenge to %s", %(name_strings) 

Там, где каждое значение из name_strings будет размещен в %s месте. Буду признателен за любую оказанную помощь.

ответ

2

Вы очень близко, все, что вам нужно сделать, это удалить запятая в вашем примере и приведение его в кортеже:

print "%s posted a challenge to %s" % tuple(name_strings) 

Edit: О, и добавить, что не хватает s в %s, как @falsetru указал.

Другим способом сделать это, без приведения к кортежу, через использование функции format, как это:

print("{} posted a challenge to {}".format(*name_strings)) 

В этом случае *name_strings синтаксис питона для изготовления каждого элемента в списке а отдельный аргумент функции format.

+0

Brilliant, спасибо так много. – zee

3
  1. Удалить ,:

    print "% posted a challenge to %s", %(name_strings) 
    #        ^
    
  2. спецификатор формата является неполным. Замените его на %s.

    print "% posted a challenge to %s" %(name_strings) 
    # ^
    
  3. String formatting operation требует кортежа, а не список: преобразовать список в кортеж.

    name_strings = ['Team 1', 'Team 2'] 
    print "%s posted a challenge to %s" % tuple(name_strings) 
    
  4. Если вы используете Python 3.x, print должен называться как форма функции:

    print("%s posted a challenge to %s" % tuple(name_strings)) 
    

Альтернатива использованием str.format:

name_strings = ['Team 1', 'Team 2'] 
print("{0[0]} posted a challenge to {0[1]}".format(name_strings)) 
+0

Блестящий, большое вам спасибо. – zee

3

One может быть расширить массив в функцию str format ...

array_of_strings = ['Team1', 'Team2'] 
message = '{0} posted a challenge to {1}' 
print(message.format(*array_of_strings)) 
#> Team1 posted a challenge to Team2 
+0

Блестящий, большое вам спасибо. – zee

0
concatenated_value = ' posted a challenge to '.join(name_strings) 
Смежные вопросы