2010-06-11 3 views
6

В C++ мы можем вводить несколько строк, предоставляя свой собственный выбор разделительного символа в функции getline(). Однако я не могу сделать то же самое в Python !! он имеет только методы raw_input() и sys.stdin.readline(), которые читаются до тех пор, пока я не нажму кнопку enter. Есть ли способ настроить это, чтобы я мог указать свой собственный разделитель?Python эквивалент C++ getline()

ответ

2

Вы все еще хотите нажать enter, чтобы создать несколько строк? Как вы заканчиваете ввод? Или вы хотите указать несколько строк в одной строке?

Если первое, то попробуйте зацикливание raw_input() пока что-то написано, что говорит его остановить:

lines = [] 
while True: 
    user_input = raw_input() 
    if user_input.strip() == "": # empty line signals stop 
     break 
    lines.append(user_input) 

Или указать несколько строк на одной строке, используя разделитель:

lines = raw_input().split(";") 
+0

это устраивает мое дело просто отлично .. :-) –

1

Вы можете попробовать немного изменить этот метод, чтобы использовать его и использовать его в своей программе.

Во-первых, импортировать модуль linecache:

import linecache 

Модуль linecache позволяет получить доступ к любой строки из любого файла. Из трех методов, которые вы, скорее всего, будете использовать больше всего, - getline. Синтаксис GetLine выглядит следующим образом:

linecache.getline('filename', line_number) 

Если у вас есть файл с именем «myfile.txt» и хотели бы строку 138 из него читать, GetLine позволяет сделать это с легкостью.

retrieved_line = linecache.getline('myfile.txt', 138) 

Затем вы можете просто распечатать retrieved_line или иным образом манипулировать данными строки 138, не делая операции над самим файлом.

+0

спасибо за ур предложение .. :-) –

0

Вам нужно будет реализовать такую ​​функцию самостоятельно. Например:

def getline(stream, delimiter="\n"): 
    def _gen(): 
    while 1: 
     line = stream.readline() 
     if delimiter in line: 
     yield line[0:line.index(delimiter)] 
     break 
     else: 
     yield line 
    return "".join(_gen()) 

import sys 
getline(sys.stdin, ".") 
+0

это тоже good..will увидеть, один я, наконец, использовать .... –