python remplace l'espace par char sinon des caractères spécifiques entre les deux

2020-08-02 python regex

Par exemple, j'ai la chaîne suivante:

"A and BZ or C and not D E"

Mon objectif est de remplacer l'espace entre deux lettres (cela devrait également fonctionner pour les sous-chaînes normales, par exemple apple) par un '-' s'il n'y a pas d'opérateur ( and, or, not ) entre les deux. La taille de la chaîne n'est pas fixe.

objectif: "A and BZ or and not DE"

J'ai essayé d'utiliser .replace ou regex, mais je n'ai pas pu faire les choses correctement. Je serais heureux de recevoir de l'aide à ce sujet!

Answers

Puisque les opérateurs sont en petit alors que les autres caractères sont en majuscules, vous pouvez utiliser

import re
s = "A and B Z or C and not D E"
s = re.sub("(?<=[A-Z]) +(?=[A-Z])", "-", s)
print(s)

ici, (?<=[AZ]) est une recherche en arrière pour un caractère en majuscule tandis que (?=[AZ]) est une expression en avant pour un caractère en majuscule
' +' correspond à un ou plusieurs espaces puis ceci est remplacé par '-'

Vous voudrez peut-être en savoir plus sur les regex. Bonne chance!

Related