0
votes

Python ~ Remplacez un caractère dans une chaîne par un élément de liste de chaînes

Je dois remplacer individuellement chaque caractère dans une chaîne par une liste de chaînes de caractères uniques.

J'ai une liste et une variable de chaîne

charList = ['a','e','i','o','u']
string = 'str'

Et j'ai besoin que la sortie soit celle-ci

a tr, e tr, i tr, o tr, u strong > tr, s a r, s e r, s i r, s o r, s u r, st a , st e , st i , st o , st u

Alors que la variable chaîne peut être aussi longue qu'un mot de 30 lettres.

Puis-je faire cela en python?

Il serait préférable de boucler d'une manière ou d'une autre que chaque itération puisse être vérifiée plus tard avec une autre variable pour une condition. Est-il possible de faire cela?


2 commentaires

Dites-nous ce que vous avez fait jusqu'à présent!


Je suis un noob et je viens d'apprendre il y a quelque temps que les chaînes sont immuables, alors j'ai essayé de créer une liste à partir de la variable chaîne, j'ai essayé d'utiliser la boucle for pour changer, remplacer l'élément d'une liste par un autre et rejoindre la liste pour la rendre chaîne encore une fois, mais ne pouvait pas le faire fonctionner. Merci beaucoup pour ces gars. Merci pour le conseil Lauro, j'ai changé le nom


4 Réponses :


1
votes

Cela fait l'affaire:

solution = []
for index, _ in enumerate(string):
    for letter in list:
        solution.append(string[:index] + letter + string[(index+1):])
print(solution)

Je conseille de changer le nom de la variable "list" car c'est un mot-clé en Python.

J'espère que cela a aidé! p>


0 commentaires

3
votes

XXX

['atr', 'etr', 'itr', 'otr', 'utr', 'sar', 'ser', 'sir', 'sor', 'sur', 'sta', 'ste', 'sti', 'sto', 'stu']


0 commentaires

1
votes
['atr', 'etr', 'itr', 'otr', 'utr', 'sar', 'ser', 'sir', 'sor', 'sur', 'sta', 'ste', 'sti', 'sto', 'stu']

1 commentaires

Cela ne fonctionnera pas avec une chaîne avec des lettres en double



-1
votes
def replace_char_for_list(astring, char, mylist):
    return [astring.replace(char, new_char) for new_char in mylist]

replace_char_for_list('str', 's', ['a','e','i','o','u'])
#['atr', 'etr', 'itr', 'otr', 'utr']

8 commentaires

Cela ne fonctionnera pas avec une chaîne avec des lettres en double


OP souhaite remplacer tous les caractères de la chaîne, pas seulement le premier.


oui @VishnuDasu a raison, veuillez lire la question avant de commenter


Je dois remplacer individuellement chaque caractère d'une chaîne par une liste de chaînes de caractères uniques.


Votre code remplace uniquement les s par ['a', 'e', ​​'i', 'o', 'u'] . OP souhaite également remplacer t et r .


mon code remplace tout ce que vous passez en tant que char à replace_char_for_list, il peut itérer la liste des remplacements


Oui, il le peut, mais ce serait formidable si vous pouviez compléter votre réponse en éditant votre code ou en disant à OP d'itérer tous les caractères.


Ce serait génial, je suis d'accord