Python, эквивалентный из C++ getline ()

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

6
задан Arnab Sen Gupta 11 June 2010 в 12:13
поделиться

3 ответа

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

В первом случае попробуйте выполнить цикл 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(";")
2
ответ дан 17 December 2019 в 18:10
поделиться

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

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
ответ дан 17 December 2019 в 18:10
поделиться

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

Сначала импортируйте модуль линейного кэша:

import linecache

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

linecache.getline('filename', line_number)

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

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

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

1
ответ дан 17 December 2019 в 18:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: