Найти - Пользователи
Полная версия: Замена по очереди, или замена n-ой подстроки
Начало » Python для новичков » Замена по очереди, или замена n-ой подстроки
1 2
st00nsa
Привет, как бы сделать замену по очереди?
a = "привет я SOME , вот тебе SOME и SOME"
somes = ["Jhony", "sosiska", "python"]


result = "Привет я Jhony , вот тебе sosiska и python"
То есть первое “SOME” в строке заминаться на первый элемент из массива, второй “SOME” на второй элемент и тд.
Разделить сплитом пробелы и пройтись по словам в массиве а потом снова пере собрать в строку, это все что пришло в голову, есть вариант изящней?
Андрей Светлов
.split('SOME')
Vader
http://www.python.su/forum/viewtopic.php?id=8523
Isem
for name in ["Jhony", "sosiska", "python"]:
a = a.replace( 'SOME', name, 1 )
Для питона 3.2:

a = a.replace('SOME', '{}').format( "Jhony", "sosiska", "python" )
st00nsa
Андрей Светлов
.split('SOME')
не понял к чему это) Но спасибо за внимание.

Vader, спасибо, почему то не нашел этот пост.
Isem, спасибо.
Андрей Светлов
>>> a = “привет я SOME , вот тебе SOME и SOME”
>>> somes =

>>> parts = a.split('SOME')

>>> ret = parts + ''.join([i + j for (i, j) in zip(somes, parts)]) + parts
>>> print ret
привет я Jhony , вот тебе sosiska и python
>>>
bw
>>> import re
>>> a = "привет я SOME , вот тебе SOME и SOME"
>>> somes = ["Jhony", "sosiska", "python"]
>>> print re.sub('SOME', lambda match: somes.pop(0), a, len(somes))
привет я Jhony , вот тебе sosiska и python
..bw
ofigetitelno
:)
result = a.replace('SOME', ‘%s’) % tuple(somes)
Vader
ofigetitelno
result = a.replace('SOME', ‘%s’) % tuple(somes)
Зачет! :)
Вот уж где действительно: “Simple is better than complex.”
bw
> Зачет
…до первого a.count('SOME') != len(somes).

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB