私は新しいPythonユーザーです。
私は次のようなものになるtxtファイルを持っています:
3,1,3,2,3
3,2,2,3,2
2,1,3,3,2,2
1,2,2,3,3,1
3,2,1,2,2,3
しかし、これより少ないか多い場合があります。
各行をリストとしてインポートしたい。
私はあなたがそのようにそれを行うことができることを知っています:
filename = 'MyFile.txt'
fin=open(filename,'r')
L1list = fin.readline()
L2list = fin.readline()
L3list = fin.readline()
しかし、行数がわからないので、個別のリストを作成する別の方法はありますか?
個別のリストを作成しないでください。リストのリストを作成します。
_results = []
with open('inputfile.txt') as inputfile:
for line in inputfile:
results.append(line.strip().split(','))
_
それ以上の場合は、 csv
モジュール を使用します。
_import csv
results = []
with open('inputfile.txt', newline='') as inputfile:
for row in csv.reader(inputfile):
results.append(row)
_
リストまたは辞書は、farファイルから読み取られたものの任意の数を追跡するための優れた構造です。
どちらのループでも、ファイルのすべての内容をメモリに読み込むことなく、データの行を個別にアドレス指定できることに注意してください。 results.append()
を使用する代わりに、すぐにその行を処理します。
完全を期すために、CSVファイルを一度にリストに読み込む1行のコンパクトバージョンを次に示します。
_import csv
with open('inputfile.txt', newline='') as inputfile:
results = list(csv.reader(inputfile))
_
リストのリストを作成します。
with open("/path/to/file") as file:
lines = []
for line in file:
# The rstrip method gets rid of the "\n" at the end of each line
lines.append(line.rstrip().split(","))
with open('path/to/file') as infile: # try open('...', 'rb') as well
answer = [line.strip().split(',') for line in infile]
番号をint
sとして使用する場合:
with open('path/to/file') as infile:
answer = [[int(i) for i in line.strip().split(',')] for line in infile]