160 votes

Supprimer tous les sauts de ligne d'une longue chaîne de texte

En fait, je demande à l'utilisateur de saisir une chaîne de texte dans la console, mais cette chaîne est très longue et comporte de nombreux sauts de ligne. Comment puis-je prendre la chaîne de l'utilisateur et supprimer tous les sauts de ligne pour en faire une seule ligne de texte ? Ma méthode pour acquérir la chaîne est très simple.

string = raw_input("Please enter string: ")

Y a-t-il une autre façon de récupérer la chaîne de l'utilisateur ? J'utilise Python 2.7.4 sur un Mac.

P.S. Je suis clairement un noob, donc même si une solution n'est pas la plus efficace, celle qui utilise la syntaxe la plus simple serait appréciée.

9voto

Neil Points 1132

Une autre option est le regex :

>>> import re
>>> re.sub("\n|\r", "", "Foo\n\rbar\n\rbaz\n\r")
'Foobarbaz'

5voto

Anar Salimkhanov Points 343

Si quelqu'un décide d'utiliser replace vous devriez essayer r'\n' au lieu de '\n'

mystring = mystring.replace(r'\n', ' ').replace(r'\r', '')

3voto

Kamil Neczaj Points 31

Une méthode prenant en compte

  • caractères blancs supplémentaires au début/à la fin de la chaîne de caractères
  • caractères blancs supplémentaires au début/à la fin de chaque ligne
  • divers caractères de fin de ligne

il prend une telle chaîne de plusieurs lignes qui peut être désordonnée, par ex.

test_str = '\nhej ho \n aaa\r\n   a\n '

et produit une belle chaîne d'une ligne

>>> ' '.join([line.strip() for line in test_str.strip().splitlines()])
'hej ho aaa a'

UPDATE : Pour corriger le caractère de nouvelle ligne multiple produisant des espaces redondants :

' '.join([line.strip() for line in test_str.strip().splitlines() if line.strip()])

Cela fonctionne également pour les éléments suivants test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '

0voto

Ankit Dwivedi Points 11

Le problème avec rstrip est qu'il ne fonctionne pas dans tous les cas (comme j'en ai moi-même vu peu). A la place, vous pouvez utiliser - text= text.replace(" \n "," ") ceci supprimera toutes les nouvelles lignes \n avec un espace.

Merci d'avance pour vos votes positifs.

0voto

Quin Points 57

Les expressions régulières sont le moyen le plus rapide de le faire.

s='''some kind   of
string with a bunch\r of

 extra spaces in   it'''

re.sub(r'\s(?=\s)','',re.sub(r'\s',' ',s))

résultat :

'some kind of string with a bunch of extra spaces in it'

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