2016-05-12 2 views
0

Хотите найти изящный способ заменить xxxxx часть динамически с массивом значений (xxxxx больше похожа на заполнитель шаблона для реальных значений строк). Например, если массив ["foo","goo","zoo"], я хочу, чтобы генерировать 3 динамических строкstring replace in Python

a="hello values: [xxxxx], have a good day" 

Динамическая строка ожидается,

"hello values: [foo], have a good day" 
"hello values: [goo], have a good day" 
"hello values: [zoo], have a good day" 

заранее спасибо, Лин

+3

Почему у вас есть xxxxx? –

+0

@PadraicCunningham, просто пример заполнителя. :) –

ответ

1

использование строки заменяющие функцию.

a.replace("xxxxxx", "foo") 

для списка:

src_name = ["foo", "goo", "zoo"] 
a = "hello values: [xxxxx], have a good day" 
result = (a.replace("xxxxx", d) for d in src_name) 
for i in result: 
    print (i) 

выход:

hello values: [foo], have a good day 
hello values: [goo], have a good day 
hello values: [zoo], have a good day 
+0

Спасибо за помощь Муннем, проголосуйте и отметьте свой ответ в качестве ответа. –

1
arr=["foo","goo","zoo"] 
a="hello values: [xxxxx], have a good day" 
for el in arr: 
    print(a.replace("xxxxx",el)) 
+0

Спасибо aless80, проголосуйте. :) –

1

ЗАМЕНИТЬ функция, что вы ищете:

a.replace('xxxxx','stringtoreplace') 

, если вы хотите, чтобы пройти через массив, то:

for str in stringarray: 
    print(a.replace('xxxxx',str)) 
0

Я цикл по массиву и выполнять регулярное выражение на нем.

Искание шаблона «[xxxxx]» и замена его любым значением массива.

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

API-интерфейс регулярного выражения Python. https://docs.python.org/2/library/re.html

+0

Спасибо, Сэмюэл Тох, проголосуйте. –

+1

Спасибо. Проголосуйте также по этому вопросу, потому что я не вижу, как это вопрос тролля, который уже получил -2 ответа. Все начинают где-то, особенно в тему манипуляции с строками. –

+0

Спасибо, Сэмюэль, хорошо провести день. :) –

1

Моя первая интенция является:

sentence = "hello values: [xxxxx], have a good day" 
names = ["foo", "goo", "zoo"] 

sentences = [sentence.replace("xxxxx", name) for name in names] 

Но у меня есть неприятный запах о приложении ... это редкость вопрос.

+0

Спасибо Darius M., проголосуйте. –

2

Идеальное использование для map(), хотя понимание списков - это более новый, более идиоматический способ сделать это.

>>> a = "hello values: [{}]" 
>>> names = ["foo", "goo", "zoo"] 

>>> map(a.format, names) 

['hello values: [foo]', 
'hello values: [goo]', 
'hello values: [zoo]'] 
+0

Спасибо TessellatingHeckler, проголосуйте. –

+0

Это лучший ответ Питонов. Вы также можете сделать '[a.format (имя) для имени в именах]' вместо карты –