Python raw_input игнорировать перевод строки - PullRequest
8 голосов
/ 28 января 2012

Есть ли способ игнорировать символы новой строки в данных, введенных через 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 и далеко не самый опытный программист. Это питон 2.7.

Ответы [ 2 ]

7 голосов
/ 28 января 2012

Поскольку 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), чтобы указать конец ввода.

1 голос
/ 28 января 2012

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

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

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

...