Python raw_input игнорирует новую строку

Есть ли способ игнорировать символы новой строки в данных, введенных через raw_input? Я пытаюсь использовать raw_input для ввода списка строк, которые копируются и вставляются из электронной таблицы. проблема в том, что кажется, что символы новой строки вызывают преждевременный ввод данных. Все пустые места в любом случае будут удалены, поэтому удаление новых строк при вводе данных будет дополнительным преимуществом. Эти данные необходимо вводить непосредственно через командную строку терминала, а не читать из файла.

Вот что я сделал до сих пор:

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

Теперь, когда я запускаю это и ввожу фиктивные имена, которые я помещаю в электронную таблицу документов Google для тестирования, как только я нажимаю shift + ctl + v, не нажимая Enter, я получаю следующее:

seth@linux-1337:~> 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
seth@linux-1337:~> 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
seth@linux-1337:~> 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
seth@linux-1337:~> 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
seth@linux-1337:~> 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
seth@linux-1337:~> 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
seth@linux-1337:~> abcd,efg,hijkl,mnop

Я новичок в Python и далеко не самый опытный программист. Это Python 2.7.


person user1175490    schedule 28.01.2012    source источник


Ответы (2)


Поскольку raw_input принимает только одну строку из ввода, вам нужно создать цикл:

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)

Тестовый забег:

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

Обратите внимание: здесь я использовал ^C (Ctrl-C), чтобы указать конец ввода.

person Rob Wouters    schedule 28.01.2012
comment
Привет, как мне сказать python, что я закончил ввод? Я пробовал ^c, но ничего не вышло. - person Jay Wong; 11.01.2016

Я не уверен, что вы пытаетесь спросить, но когда вы используете raw_input (), он удаляет завершающую новую строку.

И документ говорит то же самое.

Если аргумент приглашения присутствует, он выводится в стандартный поток вывода без символа новой строки в конце. Затем функция считывает строку из ввода, преобразует ее в строку (удаляя завершающую новую строку) и возвращает ее. При чтении EOF возникает ошибка EOFError.

person Abhijeet Rastogi    schedule 28.01.2012