добавить список подстрок в определенные позиции строки в python

у меня есть большая строка s и список координат, в которые я должен поместить некоторые строки.

s = "Hello world this is my code"

и список должностей:

cl = [(4,"this") , (7,"that") , (10 , "other")]

результат :

out >> Hell<this>o w<that>orl<other>d this is my code

я прочитал эту ссылку: Добавить строку в определенную позицию в Python и легко вставить одну строку в другую, но когда я нажимаю несколько раз, позиции меняются. как мне это сделать? благодаря.


person Nemo    schedule 30.10.2019    source источник


Ответы (3)


Вы также можете использовать enumerate:

s = "Hello world this is my code"
cl = [(4,"this") , (7,"that") , (10 , "other")]
new_cl = dict(cl)
result = ''.join(a if i not in new_cl else f"<{new_cl[i]}>{a}" for i, a in enumerate(s))

Вывод:

'Hell<this>o w<that>orl<other>d this is my code'
person Ajax1234    schedule 30.10.2019

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

for pos, text in reversed(cl):
    s = f'{s[:pos]}<{text}>{s[pos:]}'

s становится: 'Hell<this>o w<that>orl<other>d this is my code'

person blhsing    schedule 30.10.2019
comment
Если порядок неизвестен: sorted(cl, reverse=True). - person ekhumoro; 30.10.2019

нравится:

s = "Hello world this is my code"
cl = [(4,"this") , (7,"that") , (10 , "other")]

i = 0
for j,w in cl:
    s = s[:j+i] + w + s[j+i:]
    i += len(w)

Просто добавляйте длину каждого добавленного слова на каждом шаге. Надеюсь это поможет!

person BenedictWilkinsAI    schedule 30.10.2019