1
votes

Comment remplacer le trait d'union et la nouvelle ligne dans une chaîne en Python

Je travaille sur un texte avec plusieurs divisions de syllabes.

Une chaîne typique est quelque chose comme ça

"this good period has"

J'ai essayé:

my_string.replace('-'+"\r","")

Cependant, cela ne fonctionne pas.

Je voudrais obtenir

"this good pe-
riod has"


1 commentaires

Ma réponse fonctionne-t-elle pour vous?


3 Réponses :


1
votes

Avez-vous essayé ceci?

import re

text = """this good pe-
riod has"""
print(re.sub(r"-\s+", '', text))
# this good period has


0 commentaires

1
votes

Après avoir fait correspondre - , vous devez faire correspondre la nouvelle ligne \ n :

my_string = """this good pe-
riod has"""
print(my_string.replace("-\n",""))
# this good period has


0 commentaires

1
votes

Cela dépend de la fin de votre chaîne, vous pouvez également utiliser my_string.replace ('- \ r \ n', '') ou un retour chariot optionnel en utilisant re.sub et - (?: \ r? \ n | \ r)

S'il doit y avoir un caractère de mot avant et après, au lieu de supprimer tous les traits d'union à la fin de la ligne, vous pouvez utiliser des contours:

this good period has

Démo Regex | Démo Python

Par exemple

import re

regex = r"(?<=\w)-\r?\n(?=\w)"
my_string = """this good pe-
riod has"""

print (re.sub(regex, "", my_string))

Sortie

(?<=\w)-\r?\n(?=\w)


2 commentaires

@CarySwoveland Vous êtes très vif. (Je voulais dire aujourd'hui, mais vous êtes toujours pointu :-))


@CarySwoveland Oui, c'est pourquoi j'ai commencé la réponse avec Cela dépend de la fin de votre chaîne comme ideone. com / Qkmu32