Может ли вход Python обрабатывать inline \ n? - PullRequest
1 голос
/ 19 октября 2011

Я пытаюсь написать программу, которая будет принимать пользовательский ввод, который будет вставленным блоком текста (включая несколько новых строк / возвратов каретки).У меня проблемы с поиском информации о том, как (если) Python может справиться с этим.Нормальное поведение для команды ввода завершаться, как только встречается первая \ n.

1 Ответ

4 голосов
/ 19 октября 2011

Когда я впервые увидел ваш вопрос, я прочитал «команда ввода» как «команда ввода», а не как «функция ввода ()».Теперь я предполагаю, что вы собираете данные из командной строки.

Проблема с вводом данных с символами новой строки заключается в следующем: когда вы прекращаете принимать ввод?Следующий пример обходит это, ожидая, пока пользователь нажмет ctrl-d .Это вызывает исключение в функции raw_input(), а затем прерывает цикл while.

text = ''

# keep looping forever
while True:
    try:
        # grab the data from the user, and add back the newline
        # which raw_input() strips off
        text += raw_input() + "\n"
    except EOFError:
        # if you encounter EOF (which ctrl-d causes) break out of the loop
        break

# print the text you've gathered after a dashed line
print "\n------------\n" + text

Очевидно, вы захотите предупредить вашего пользователя, что ему придется использовать ctrl-d чтобы прекратить ввод текста, что может быть немного неудобно - но если они уже находятся в командной строке, это не должно быть так плохо.

Кроме того, здесь я использовал raw_input(),который собирает данные, но не exec(), как input().Если вы хотите выполнить результаты, вы можете просто заменить вызов print() на:

exec(text)

, чтобы получить аналогичные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...