0
votes

Substituer l'instance d'un caractère, à l'exception du premier, dans une chaîne d'entrée

Les cordes de Python sont immuables, j'ai essayé cette solution de contournement: j'ai d'abord cassé la chaîne dans ses composants de caractère, les mettant dans une liste. Ensuite, j'ai procédé en boucle dans cette liste et en remplaçant la deuxième occurrence du personnage que je voulais modifier dans le caractère cible. La dernière partie était bien sûr de ré-construire la chaîne de la nouvelle liste ainsi obtenue.

Go$gle


4 commentaires

Il serait plus facile de comprendre avec l'échantillon d'entrée et de sortie d'échantillon. Veuillez fournir exemple de reproductible minimal .


Cela remplacera chaque occurrence à partir de la seconde. Est-ce que c'est désiré?


J'ai ajouté l'entrée d'échantillon et la sortie à la fin de la poste.


@schwObaseggl Oui! C'est ça.


3 Réponses :


0
votes

Vous pouvez effectuer ce qui suit:

char = "a"
stri = "santaclaus"
char.join("$".join(s.split(char)) for s in stri.split(char, 1))
# 'sant$cl$us'


0 commentaires

0
votes
def modify():
    while True:  
        varstr = input("Insert a string to modify:\n> ")
        if ' ' in varstr:
            print("Please insert a string without space")
        else:
            break
    while True:
        varchar = input("Insert a SINGLE character to modify in $:\n> ")
        if len(varchar) > 1:
            print("Please insert a single character, without spaces")
        else:
            break
    return varstr[0] + varstr[1:].replace(varchar, '$')

0 commentaires

0
votes

Essayez ceci:

def modify():
    while True:
        varstr = input("Insert a string to modify:\n> ")
        if len(varstr) > 0 and ' ' not in varstr:
            break
        print("Please insert a string without space")
    while True:
        varchar = input("Insert a SINGLE character to modify in $:\n> ")
        if len(varchar) == 1 and varchar != ' ':
            break
        print("Please insert a single character, without spaces")
    first = varstr.find(varchar) + 1
    varstr = varstr[:first] + varstr[first:].replace(varchar, "$")
    return varstr
  • Vous pouvez utiliser une boucle tandis que comme indiqué, au lieu de récursivité, pour répéter l'entrée. Si vous souhaitez vraiment utiliser une récursive, vous devez ajouter un retour code> après le modifier () code> appel. Li>
  • Si vous souhaitez convertir une chaîne en une liste de caractères, vous pouvez utiliser strlist = liste (varstr) code>. Ensuite, vous pouvez muter et revenir à la chaîne en utilisant ''. Joindre (Strlist) CODE> LI> ul> p>


0 commentaires