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.

244voto

Daren Thomas Points 26812

Comment saisir les sauts de ligne avec raw_input ? Mais, une fois que vous avez une chaîne avec des caractères dont vous voulez vous débarrasser, il suffit de replace les.

>>> mystr = raw_input('please enter string: ')
please enter string: hello world, how do i enter line breaks?
>>> # pressing enter didn't work...
...
>>> mystr
'hello world, how do i enter line breaks?'
>>> mystr.replace(' ', '')
'helloworld,howdoienterlinebreaks?'
>>>

Dans l'exemple ci-dessus, j'ai remplacé tous les espaces. La chaîne '\n' représente les nouvelles lignes. Et \r représente les retours de chariot (si vous êtes sous Windows, il se peut que vous obteniez ces derniers) et un second replace s'en chargera pour vous !).

fondamentalement :

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')

Notez également que c'est une mauvaise idée d'appeler votre variable string car cela fait de l'ombre au module string . Un autre nom que j'éviterais mais que j'aimerais utiliser parfois : file . Pour la même raison.

61voto

Vous pouvez essayer d'utiliser le remplacement de chaîne :

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

37voto

Sean Points 3056

Vous pouvez diviser la chaîne sans arg de séparation, ce qui traitera les espaces consécutifs comme un seul séparateur (y compris les nouvelles lignes et les tabulations). Ensuite, vous pouvez joindre la chaîne en utilisant un espace :

In : " ".join("\n\nsome    text \r\n with multiple whitespace".split())
Out: 'some text with multiple whitespace'

https://docs.python.org/2/library/stdtypes.html#str.split

21voto

fralau Points 717

Le site réponse canonique en Python, serait :

s = ''.join(s.splitlines())

Il découpe la chaîne en lignes (en laissant Python le faire selon ses propres bonnes pratiques). Ensuite, vous la fusionnez. Deux possibilités ici :

  • remplacer le saut de ligne par un espace ( ' '.join() )
  • ou sans espace ( ''.join() )

15voto

tokhi Points 1911

Mis à jour sur la base de Xbello commentaire :

string = my_string.rstrip('\r\n')

en savoir plus ici

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