pythonで終了条件が指定されていないテキスト情報を標準入力から入力する際の備忘録です
以下のようなcsv
ファイルをpythonで処理したい。
ただし事前に何行あるか不明である、という場合は以下のようにsys.stdin.readlines()
で一度全ての入力を受け取ってから処理すると良い。
test.csv
player1,-,L,L,W,L,L,L,W,L,W,W,
player2,W,-,W,W,L,L,L,W,L,L,W,
player3,W,L,-,W,L,L,W,L,L,W,W,
player4,L,L,L,-,W,W,L,L,L,L,W,
player5,W,W,W,L,-,D,L,L,L,W,W,
player6,W,W,W,L,D,-,L,L,W,L,W,
player7,W,W,L,W,W,W,-,L,L,L,W,
player8,L,L,W,W,W,W,W,-,D,W,W,
player9,W,W,W,W,W,L,W,D,-,W,W,
player10,L,W,L,W,L,W,W,L,L,-,W,
player11,L,L,L,L,L,L,L,L,L,L,-,
sys.stdin.readlines()
で一度全ての入力を受け取る。
test.py
import sys
ll=[]
# 入力
for line in sys.stdin.readlines():
A=list(map(str, line.split(',')))
ll.append(A)
# 出力
for i in ll:
print(i)
実行結果
$ cat test.csv | python3 test.py
['player1', '-', 'L', 'L', 'W', 'L', 'L', 'L', 'W', 'L', 'W', 'W', '\n']
['player2', 'W', '-', 'W', 'W', 'L', 'L', 'L', 'W', 'L', 'L', 'W', '\n']
['player3', 'W', 'L', '-', 'W', 'L', 'L', 'W', 'L', 'L', 'W', 'W', '\n']
['player4', 'L', 'L', 'L', '-', 'W', 'W', 'L', 'L', 'L', 'L', 'W', '\n']
['player5', 'W', 'W', 'W', 'L', '-', 'D', 'L', 'L', 'L', 'W', 'W', '\n']
['player6', 'W', 'W', 'W', 'L', 'D', '-', 'L', 'L', 'W', 'L', 'W', '\n']
['player7', 'W', 'W', 'L', 'W', 'W', 'W', '-', 'L', 'L', 'L', 'W', '\n']
['player8', 'L', 'L', 'W', 'W', 'W', 'W', 'W', '-', 'D', 'W', 'W', '\n']
['player9', 'W', 'W', 'W', 'W', 'W', 'L', 'W', 'D', '-', 'W', 'W', '\n']
['player10', 'L', 'W', 'L', 'W', 'L', 'W', 'W', 'L', 'L', '-', 'W', '\n']
['player11', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', '-', '\n']
ただしあまりにも標準入力が多い場合はメモリ制約を受けそうであり別の方法を考えた方が良い場合もありそう。
参考