Básicamente, le pido al usuario que ingrese una cadena de texto en la consola, pero la cadena es muy larga e incluye muchos saltos de línea. ¿Cómo tomaría la cadena del usuario y eliminaría todos los saltos de línea para convertirla en una sola línea de texto? Mi método para adquirir la cadena es muy simple.
string = raw_input("Please enter string: ")
¿Hay una forma diferente en que debería estar agarrando la cadena del usuario? Estoy ejecutando Python 2.7.4 en una Mac.
PD: Claramente soy un novato, por lo que incluso si una solución no es la más eficiente, agradecería la que usa la sintaxis más simple.
strip
elimina los espacios en blanco al comienzo y al final de una cadena, no dentro de la cadena ...Respuestas:
¿Cómo se ingresan los saltos de línea
raw_input
? Pero, una vez que tiene una cadena con algunos caracteres, desea eliminarlos, soloreplace
ellos.En el ejemplo anterior, reemplacé todos los espacios. La cadena
'\n'
representa nuevas líneas. Y\r
representa los retornos de carro (si estás en Windows, ¡podrías estar recibiendo estos y un segundoreplace
los manejará por ti!).básicamente:
Tenga en cuenta también que es una mala idea llamar a su variable
string
, ya que esto sombrea el módulostring
. Otro nombre pero yo evitaría gustaría utilizar a veces:file
. Por la misma razón.fuente
\r
retornos de carro. He intentado eliminar todos los métodos,\n
pero todavía no estaba capturando a los\r
personajes.string
, pero por una razón similar no desea usar el nombre de la variablestr
.\n
pero no tienen\r\n
.Puedes intentar usar string replace:
fuente
Puede dividir la cadena sin argumento de separación, que tratará los espacios en blanco consecutivos como un separador único (incluidas las nuevas líneas y pestañas). Luego únete usando un espacio:
https://docs.python.org/2/library/stdtypes.html#str.split
fuente
actualizado basado en el
Xbello
comentario:lea más aquí
fuente
rstrip("\r\n")
rstrip('\r\n')
no era suficiente y tenía que ir con:my_string.rstrip('\r\n').replace('\n', ' ')
Otra opción es regex:
fuente
r'[\n\r]+'
o inclusor'\s+'
reemplazar cualquier espacio en blanco con un solo espacio.Un método que tiene en cuenta
se necesita una cadena de varias líneas que puede ser desordenada, por ejemplo
y produce una buena cadena de una línea
ACTUALIZACIÓN: Para corregir múltiples caracteres de nueva línea que producen espacios redundantes:
Esto también funciona para lo siguiente
test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '
fuente
Si alguien decide utilizar
replace
, usted debe tratarr'\n'
vez'\n'
fuente
r
("literal de cadena sin formato"). Lamentablemente, no tengo idea de por qué)El problema con rstrip es que no funciona en todos los casos (como yo mismo he visto pocos). En su lugar, puede usar - text = text.replace ("\ n", "") esto eliminará todas las líneas nuevas \ n con un espacio.
Gracias de antemano chicos por sus votos positivos.
fuente