ユーザーから複数行の入力を取得する方法
複数行の入力を取得し、1行ずつ処理するプログラムを作成したいと思います。 Python 3にraw_input
のような関数がないのはなぜですか?
input
は、改行(Enter)、最初の行のみを印刷します。
変数に保存したり、リストに読み取ったりすることはできますか?
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)
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)
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行が読み取られた後に戻ります。
input()
組み込み関数を使用して、ユーザーから入力行を取得します。
ヘルプはこちら と読むことができます。
次のコードを使用して、複数の行を一度に取得できます(空の行で終了します)。
while input() != '':
do_thing
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