194 votes

Remplacer les instances d'un caractère dans une chaîne de caractères

Ce code simple qui essaie simplement de remplacer les points-virgules (à des positions i-spécifiées) par des deux-points ne fonctionne pas :

for i in range(0,len(line)):
     if (line[i]==";" and i in rightindexarray):
         line[i]=":"

Il donne l'erreur

line[i]=":"
TypeError: 'str' object does not support item assignment

Comment puis-je contourner ce problème en remplaçant les points-virgules par des deux-points ? L'utilisation de replace ne fonctionne pas car cette fonction ne prend pas d'index - il peut y avoir des points-virgules que je ne veux pas remplacer.

Exemple

Dans la chaîne de caractères, je peux avoir un nombre quelconque de points-virgules, par exemple "Hei der ! ; Hello there ;! ;".

Je sais quels sont ceux que je veux remplacer (j'ai leur index dans la chaîne). L'utilisation de replace ne fonctionne pas car je ne suis pas en mesure d'utiliser un index avec lui.

3voto

Darshan Jain Points 41

Vous ne pouvez pas simplement attribuer une valeur à un caractère de la chaîne. Utilisez cette méthode pour remplacer la valeur d'un caractère particulier :

name = "India"
result=name .replace("d",'*')

Sortie : In*ia

De même, si vous voulez remplacer, dites * pour toutes les occurrences du premier caractère, sauf le premier caractère, ex. chaîne = babble sortie = ba**le

Code :

name = "babble"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,'*')
return front+back

2voto

N.Samuel Points 21

Pour utiliser efficacement la méthode .replace() sur une chaîne de caractères sans créer une liste séparée par exemple, regardez la liste nom d'utilisateur contenant une chaîne de caractères avec un espace blanc, nous voulons remplacer l'espace blanc par un trait de soulignement dans chacune des chaînes de noms d'utilisateur.

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []

pour remplacer les espaces blancs dans chaque nom d'utilisateur, pensez à utiliser la fonction range en python.

for name in names:
    usernames.append(name.lower().replace(' ', '_'))

print(usernames)

Ou si vous voulez utiliser une seule liste :

for user in range(len(names)):
   names[user] = names[user].lower().replace(' ', '_')

print(names)

0voto

Bipin Shetty Points 71

Si vous remplacez par une valeur d'index spécifiée dans la variable 'n', essayez la méthode suivante :

def missing_char(str, n):
 str=str.replace(str[n],":")
 return str

0voto

Dylan Maulucci Points 11

Que dites-vous de ça ?

sentence = 'After 1500 years of that thinking surpressed'

sentence = sentence.lower()

def removeLetter(text,char):

    result = ''
    for c in text:
        if c != char:
            result += c
    return text.replace(char,'*')
text = removeLetter(sentence,'a')

0voto

Sanket Hire Points 41

Pour remplacer un caractère à un indice spécifique, la fonction est la suivante :

def replace_char(s , n , c):
    n-=1
    s = s[0:n] + s[n:n+1].replace(s[n] , c) + s[n+1:]
    return s

où s est une chaîne de caractères, n est un indice et c est un caractère.

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