6

C ++では、getline()関数で区切り文字を独自に選択することで、複数の行を入力できます。ただし、Pythonでは同じことはできません。Enterキーを押すまで読み取るraw_input()メソッドとsys.stdin.readline()メソッドしかありません。独自の区切り文字を指定できるようにこれをカスタマイズする方法はありますか?

4

3 に答える 3

3

それでもEnterキーを押して複数の行を作成しますか?入力をどのように終了しますか?または、1行に複数の行を指定しますか?

前者の場合は、停止するように指示する何かが書き込まれるまでraw_input()をループしてみてください。

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

または、区切り文字を使用して1行に複数の行を指定するには:

lines = raw_input().split(";")
于 2010-06-11T12:32:12.197 に答える
2

このメソッドを少し変更して、プログラムで使用することができます。

まず、ラインキャッシュモジュールをインポートします。

import linecache

linecacheモジュールを使用すると、任意のファイルから任意の行にアクセスできます。その3つの方法のうち、最もよく使用するのはgetl​​ineです。getlineの構文は次のとおりです。

linecache.getline('filename', line_number)

'myfile.txt'というファイルがあり、そこから138行目を読み取りたい場合、getlineを使用すると簡単に読み取ることができます。

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

次に、ファイル自体に手術を行わずに、retrieve_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 に答える