6

在 C++ 中,我们可以通过在 getline() 函数中提供我们自己选择的分隔符来输入多行。但是我不能在 Python 中做同样的事情!它只有 raw_input() 和 sys.stdin.readline() 方法,直到我按下回车键。有什么方法可以自定义它以便我可以指定自己的分隔符?

4

3 回答 3

3

是否仍要按 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(";")
于 2010-06-11T12:32:12.197 回答
2

您可以尝试稍微修改此方法以使用它并在您的程序中使用它。

首先,导入 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 行的数据,而无需对文件本身进行手术。

于 2010-06-11T12:20:39.957 回答
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, ".")
于 2010-06-11T13:01:36.723 回答