【问题标题】:Python equivalent of C++ getline()Python 等价于 C++ getline()
【发布时间】:2011-03-02 15:25:25
【问题描述】:

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

【问题讨论】:

    标签: c++ python getline


    【解决方案1】:

    您仍要按 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(";")
    

    【讨论】:

    • 这很适合我的事业.. :-)
    【解决方案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 行的数据,而无需对文件本身进行手术。

    【讨论】:

    • 感谢您的建议.. :-)
    【解决方案3】:

    您需要自己实现这样的功能。例如:

    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, ".")
    

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多