Je souhaite remplacer les instances répétées du caractère "*"
dans une chaîne avec une seule instance de "*"
. Par exemple, si la chaîne est "***abc**de*fg******h"
, je souhaite la convertir en "*abc*de*fg*h"
.Comment remplacer des instances répétées d'un caractère avec une seule instance de ce caractère en python
Je suis assez nouveau pour python (et la programmation en général) et ont essayé d'utiliser des expressions régulières et String.replace() comme:
import re
pattern = "***abc**de*fg******h"
pattern.replace("*"\*, "*")
où \*
est censé remplacer toutes les instances du « * " personnage. Mais j'ai: SyntaxError: caractère inattendu après le caractère de continuation de ligne.
J'ai aussi essayé de le manipuler avec une boucle comme:
def convertString(pattern):
for i in range(len(pattern)-1):
if(pattern[i] == pattern[i+1]):
pattern2 = pattern[i]
return pattern2
mais cela a l'erreur où il ne imprime « * » parce que pattern2 = motif [i] redéfinit constamment ce que pattern2 est ...
Toute aide serait appréciée.
Merci beaucoup, cela fonctionne bien, je vais lire l'article sur RE pour savoir ce qui se passe exactement avec la partie "\ +" du code. Je ne savais pas que vous pouviez utiliser plusieurs symboles en même temps. Je pensais que vous ne pouviez utiliser que "+" ou "*" par exemple. – NSchrading
@NSchrading: Dans '" \\ * + "', j'échappe au caractère * car c'est un symbole re spécial. Donc, je fais correspondre un caractère littéral *, et le + signifie un ou plusieurs. – JoshD