2 votes

Comment remplacer différents modèles par le même remplacement ?

Je suis en train d'essayer de remplacer plusieurs éléments en utilisant des regex mais je n'obtiens pas la sortie attendue. Dans le code ci-dessous, je dois remplacer le numéro de téléphone et le mot 'hi' par "X"

txt = "Hi, my phone number is 089992654231. I am 24 years old."

def processString3(txt):
    txt = re.sub('[0-9],Hi]', 'X', txt)
    print(txt)

processString3(txt)

Sortie attendue - XX, my phone number is XXXXXXXXXX. I am 24 years old.

3voto

Tim Biegeleisen Points 53335

Vous pourriez trouver ce qui suit acceptable:

txt = "Salut, mon numéro de téléphone est 089992654231. J'ai 24 ans."

def processString3(txt):
    txt = re.sub('[0-9]{5,}|Hi', lambda m: re.sub(r'.', 'X', m.group()), txt)
    print(txt)

processString3(txt)
# XX, mon numéro de téléphone est XXXXXXXXXXXX. J'ai 24 ans.

La logique ci-dessus définit un numéro de téléphone cible comme étant tout nombre de 5 chiffres ou plus à la suite. Cela exclurait les âges, qui ne devraient jamais dépasser 3 chiffres.

-1voto

Winter Squad Points 29

Votre expression régulière est mal formée, essayez :

import re

def processString3(txt):
    phone_number = re.search(r'(\d{5,})', txt)
    greetings = re.search(r'(Hi)', txt)
    if phone_number:
        number_str = phone_number.group(1)
        txt = txt.replace(number_str, 'X' * len(number_str))
    if greetings:
        greeting_str = greetings.group(1)
        txt = txt.replace(greeting_str, 'X' * len(greeting_str))
    print(txt)

if __name__ == '__main__':
    txt = "Hi, my phone number is 089992654231. I am 24 years old."
    processString3(txt)

Ceci est une solution temporaire car vous ne spécifiez pas exactement les mots que vous voulez cacher. Si vous donnez plus de détails, je peux vous fournir une réponse plus efficace.

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