[Python] Chercher et remplacer une chaine de caractères dans une liste par une autre chaine

Le problème exposé dans ce sujet a été résolu.

Bonjour,

je suis debutant en Python et je cherche a remplacer une chaine par une autre chaine dans une liste.

Voici la liste :

['AAA^B','AAA^B','AEI^C','MSFT','AAPL','AOI','MCRE^B']

je souhaite remplacer le pattern :


'^*' par '-P*'

donc ^B' ou '^C' par exemple par '-PB' et '-PC'

J’ai essaye d’utiliser ca :

stock_list = ['-P{}' if i=='^{}' else i for i in stock_list]

Mais ca ne semble pas fonctionner car je pense que cela cherche la chaine entiere et non juste '^{}'

J’ai essaye de regarder du cote de re.sub mais je ne vois pas trop comment commencer, si vous avez des suggestions ou remarques

merci par avance !

+0 -0

bonjour, il y a plusieurs moyens de remplacer une partie de chaine de caractère la plus simple est de faire appel a la méthode replace().

string="abcd"
result=string.replace('bc','test')
print(result)

la seconde méthode possible qui peut être utilisé est de faire appel a la librairie re de python pour utiliser des expressions régulières cette seconde méthodes est plus avancée est je pense un peu trop complexe pour ce problème. Cependant avec quelques recherches sur internet ont trouve facilement des documentations dessus.

Bonjour,

Merci beaucoup

Jai cependant un soucis,

Car la valeur apres le '^' n’est pas toujours la meme et donc je ne dois pas remplacer toujours par le meme valeur, par exemple pour la liste suivante :

['AAA^B','AAA^A','AEI^C','MSFT','AAPL','AOI','MCRE^B']

La liste avec les caracteres transformee doit donner cela :

['AAA-PB','AAA-PA','AEI-PC','MSFT','AAPL','AOI','MCRE-PB']

Du coup je n’arrive pas a modifier selon la valeur apres le '^'

Voici mon code :

stock_list = ['AAA^B','AAA^c','AEI^C','MSFT','AAPL','AOI','MCRE^B']
stock_list2 = []


for stock in stock_list:
    stmp = stock.replace('\^*', '\-P*')
    stock_list2.append(stmp)
    print(stmp)
print(stock_list2)


Je ne sais pas comment faire en sorte que le scrip fasse la modif en fonction de la valeur apres le '^'

Bonne journee,

merci d’avance

+0 -0

Salut,

Le * ne correspond à rien dans tes remplacements : la méthode replace fait une substitution bête et méchante, elle ne comprend pas de caractères spéciaux (pas de \ ou de *, ce n’est pas une expression rationnelle). Pour remplacer les ^ par des -P il faut alors appeler replace('^', '-P').

Nul besoin de savoir ce qui se situe avant ou après.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte