9 votes

Python : Remplacement d'un index par une chaîne de caractères

Je veux dire, je veux remplacer str[9:11] pour une autre chaîne. Si je fais str.replace(str[9:11], "###") Cela ne fonctionne pas, car la séquence [9:11] peut être plus d'une fois. Si str est "cdabcjkewabcef" j'obtiendrais "cd###jkew###ef" mais je ne veux remplacer que le second.

18voto

blauerdaemon Points 1

Vous pouvez faire

s="cdabcjkewabcef"
snew="".join((s[:9],"###",s[12:]))

ce qui devrait être plus rapide que de joindre comme snew=s[:9]+"###"+s[12:] sur les grosses cordes

3voto

Damian Lattenero Points 8950

Vous pouvez y parvenir en faisant :

yourString = "Hello"
yourIndexToReplace = 1 #e letter
newLetter = 'x'
yourStringNew="".join((yourString[:yourIndexToReplace],newLetter,yourString[yourIndexToReplace+1:]))

2voto

ospahiu Points 2736

Vous pouvez utiliser join() avec des sous-chaînes.

s = 'cdabcjkewabcef'
sequence = '###'
indicies = (9,11)
print sequence.join([s[:indicies[0]-1], s[indicies[1]:]])
>>> 'cdabcjke###cef'

1voto

CodeChords man Points 3191

Étant donné txt et s - la chaîne de caractères que vous voulez remplacer :

txt.replace(s, "***", 1).replace(s, "###").replace("***", s)

Une autre façon :

txt[::-1].replace(s[::-1], "###", 1)[::-1]

0voto

User_Targaryen Points 1912

Voici un exemple de code :

word = "astalavista"
index = 0
newword = ""
addon = "xyz"
while index < 8:
    newword = newword + word[index]
    index += 1
    ind = index

i = 0
while i < len(addon):
    newword = newword + addon[i]
    i += 1

while ind < len(word):
    newword = newword + word[ind]
    ind += 1

print newword

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X