2012-01-28 11 views
8

¿Hay alguna manera de ignorar los caracteres de nueva línea en los datos ingresados ​​a través de raw_input? Intento usar raw_input para ingresar una lista de cadenas que se copian y pegan desde una hoja de cálculo. el problema es que parece que los nuevos caracteres de línea hacen que los datos se ingresen prematuramente. Todos los espacios vacíos se eliminarán de todos modos, por lo que eliminar las nuevas líneas a medida que se ingresen los datos sería un beneficio adicional. Esta información debe ingresarse directamente a través de la solicitud de la terminal y no debe leerse desde un archivo.Python raw_input ignorar nueva línea

Esto es lo que he hecho hasta ahora:

names = raw_input('Shoot me some names partner: ') 

print 'What do you want to do?' 
print '1 - format names for program 1' 
print '2 - format names for program 2' 

first_act = raw_input('Enter choice: ') 

print names 
print first_act 

Ahora en que funciono esto y entrada de los nombres ficticios he puesto en una hoja de cálculo doc google para poner a prueba, tan pronto como me golpeó shift + ctrl + v sin oprimir la tecla Enter me sale esto:

[email protected]:~> python pythonproj/names.py 
Shoot me some names partner: abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnopWhat do you want to do? 
1 - format names for program 1 
2 - format names for program 2 
Enter choice: abcd,efg,hijkl,mnop 
abcd,efg,hijkl,mnop 
[email protected]:~> abcd,efg,hijkl,mnop 
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this: 
cnf abcd,efg,hijkl,mnop 
[email protected]:~> abcd,efg,hijkl,mnop 
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this: 
cnf abcd,efg,hijkl,mnop 
[email protected]:~> abcd,efg,hijkl,mnop 
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this: 
cnf abcd,efg,hijkl,mnop 
[email protected]:~> abcd,efg,hijkl,mnop 
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this: 
cnf abcd,efg,hijkl,mnop 
[email protected]:~> abcd,efg,hijkl,mnop 
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this: 
cnf abcd,efg,hijkl,mnop 
[email protected]:~> abcd,efg,hijkl,mnop 

soy bastante nuevo en Python, y no soy el programador más experimentado, con diferencia. Esto es python 2.7.

Respuesta

1

No estoy seguro de lo que intenta preguntar, pero cuando usa raw_input(), quita una nueva línea final.

Y el documento dice lo mismo también.

Si el argumento símbolo está presente, se escribe en la salida estándar sin un salto de línea final. La función luego lee una línea de entrada, la convierte en una cadena (quitando una nueva línea final) y devuelve . Cuando se lee EOF, se produce EOFError.

7

Debido raw_input sólo se necesita una línea de entrada que necesita para crear un bucle:

names = [] 
print('Shoot me some names partner: ') 
while True: 
    try: 
     name = raw_input() 
    except KeyboardInterrupt: 
     break 
    names.append(name) 

print('What do you want to do?') 
print('1 - format names for program 1') 
print('2 - format names for program 2') 

first_act = raw_input('Enter choice: ') 

print(names) 
print(first_act) 

Prueba de funcionamiento:

Shoot me some names partner: 
name1 
name2 
^CWhat do you want to do? 
1 - format names for program 1 
2 - format names for program 2 
Enter choice: 1 
['name1', 'name2'] 
1 

Nota He usado ^C (Ctrl-C) aquí para indicar el final de la entrada.

+0

Hola, ¿cómo debo decir a Python que he terminado mi entrada? Intenté '^ c', pero no funcionó. –