2013-06-26 2 views
0

У меня есть два списка строк, которые я хочу объединить в строку. В принципе, если у меня есть два списка:Python Присоединиться к нескольким спискам в строку с%

name = ['Name1', 'Name2', 'Name3']

link = ['Link1', 'Link2', 'Link3']

и я хочу, чтобы вставить их в строку, например, один ниже:

<a href="%s">%s

Возможно ли это сделать используя соединение или мне нужно использовать цикл for?

+1

Зачем использовать '%'? Если вы не используете старую версию python, вы должны использовать '.format()' – TerryA

+0

В зависимости от приложения (т. Е. Если это часть веб-приложения или скрипта CGI), лучше использовать язык шаблонов таких как [Jinja2] (http://jinja.pocoo.org/docs/). Кроме того, было бы лучше назвать эти переменные «именами» и «ссылками», потому что они являются контейнерами, которые содержат * множество * элементов. –

+0

@Haidro Что такое '.format()'? На самом деле, я не сталкивался с этим раньше. – user1998511

ответ

3
['<a href="%s">%s' % (n, l) for (n, l) in zip(name, link)] 

Но не забывайте кодировать n и l надлежащим образом в целях предотвращения проблем безопасности.

+0

Да, хотя обратите внимание, что вам не нужны парады вокруг второго '(n, l) 'выше. –

0

@ Ответ Игнасио является отличным решением для этого приложения.

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

from itertools import chain, izip 
name = ['Name1', 'Name2', 'Name3']  
link = ['Link1', 'Link2', 'Link3'] 

args = [i for i in chain.from_iterable(izip(name, link))] 
placeholder = ''.join(["<a href=%s>%s"] * len (name)) 
# combined to make '<a href=%s>%s<a href=%s>%s<a href=%s>%s' 
print placeholder % tuple(args) 

Две полезные приемы (а) использовать список умножение дублировать строку заполнителя по мере необходимости и (б) помнить, что% требует кортеж аргумента. Это общая схема при расширении списков заполнителей

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