Fondamentalement, je demande à l'utilisateur de saisir une chaîne de texte dans la console, mais la chaîne est très longue et comprend 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: ")
Existe-t-il une manière différente de saisir la chaîne de l'utilisateur? J'exécute Python 2.7.4 sur un Mac.
PS 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.
strip
supprime les espaces au début et à la fin d'une chaîne, pas à l' intérieur de la chaîne ...Réponses:
Comment saisissez-vous 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, justereplace
eux.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 chariot (si vous êtes sur Windows, vous pourriez les obtenir et une secondereplace
les gérera pour vous!).fondamentalement:
Notez également que c'est une mauvaise idée d'appeler votre variable
string
, car cela fait de l'ombre au modulestring
. Un autre nom il faut éviter , mais aimerais parfois utiliser:file
. Pour la même raison.la source
\r
retours chariot. J'ai essayé toutes les méthodes pour supprimer\n
mais je n'ai toujours pas capturé les\r
personnages.string
, mais pour une raison similaire, vous ne souhaitez pas utiliser le nom de la variablestr
.\n
mais pas\r\n
.Vous pouvez essayer d'utiliser le remplacement de chaîne:
la source
Vous pouvez diviser la chaîne sans séparateur arg, ce qui traitera les espaces blancs consécutifs comme un seul séparateur (y compris les nouvelles lignes et les tabulations). Puis rejoignez en utilisant un espace:
https://docs.python.org/2/library/stdtypes.html#str.split
la source
mis à jour en fonction du
Xbello
commentaire:en savoir plus ici
la source
rstrip("\r\n")
rstrip('\r\n')
n'était pas suffisant et devait aller avec:my_string.rstrip('\r\n').replace('\n', ' ')
Une autre option est regex:
la source
r'[\n\r]+'
ou mêmer'\s+'
de remplacer n'importe quel espace blanc par un seul espace.Une méthode prenant en compte
il prend une telle chaîne multi-lignes qui peut être désordonnée par exemple
et produit une belle chaîne d'une ligne
MISE À JOUR: Pour corriger plusieurs caractères de nouvelle ligne produisant des espaces redondants:
Cela fonctionne aussi pour les éléments suivants
test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '
la source
Si quelqu'un décide d'utiliser
replace
, vous devriez essayer à lar'\n'
place'\n'
la source
r
("littéral de chaîne brute"). Malheureusement, je ne sais pas pourquoi)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", "") cela supprimera toute nouvelle ligne \ n avec un espace.
Merci d'avance les gars pour vos votes positifs.
la source