web-dev-qa-db-ja.com

ユーザーから複数行の入力を取得する方法

複数行の入力を取得し、1行ずつ処理するプログラムを作成したいと思います。 Python 3にraw_inputのような関数がないのはなぜですか?

inputは、改行(Enter)、最初の行のみを印刷します。

変数に保存したり、リストに読み取ったりすることはできますか?

21
MaciejPL

Python 3.xでは、Python 2.xのraw_input()input()関数に置き換えられました。ただし、どちらの場合も複数行の文字列を入力することはできません。そのためには、ユーザーから行ごとに入力を取得し、\nを使用して.join()するか、さまざまな行を入力する必要があります+で区切られた\n演算子を使用して連結します

ユーザーから複数行の入力を取得するには、次のようにします。

no_of_lines = 5
lines = ""
for i in xrange(5):
    lines+=input()+"\n"

print lines

または

lines = []
while True:
    line = input()
    if line:
        lines.append(line)
    else:
        break
text = '\n'.join(lines)
30
ZdaR

raw_inputはEOFを正しく処理できるため、ユーザーからEOF(Ctrl-D)を受信するまでループを作成して読み取ることができます。

Python 3

print("Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it.")
contents = []
while True:
    try:
        line = input()
    except EOFError:
        break
    contents.append(line)

Python 2

print "Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it."
contents = []
while True:
    try:
        line = raw_input("")
    except EOFError:
        break
    contents.append(line)
34
xiaket

input(Prompt)は基本的に次と同等です

def input(Prompt):
    print(Prompt, end='', file=sys.stderr)
    return sys.stdin.readline()

sys.stdinから直接読み取ることができます。

lines = sys.stdin.readlines()

lines = [line for line in sys.stdin]

five_lines = list(itertools.islice(sys.stdin, 5))

最初の2つは、ファイルの最後に到達するか、ユーザーがControl-D(またはWindowsではControl-Z)を入力して終了を通知することにより、何らかの方法で入力を終了する必要があります。最後の行は、ファイルからでも端末/キーボードからでも、5行が読み取られた後に戻ります。

3
chepner

input()組み込み関数を使用して、ユーザーから入力行を取得します。

ヘルプはこちら と読むことができます。

次のコードを使用して、複数の行を一度に取得できます(空の行で終了します)。

while input() != '':
    do_thing
1
maggick
no_of_lines = 5
lines = ""
for i in xrange(5):
    lines+=input()+"\n"
    a=raw_input("if u want to continue (Y/n)")
    ""
    if(a=='y'):
        continue
    else:
        break
    print lines
0
mohankumar.A