次のようなファイルがあります。
1 99
2 33
3 90
4 25
5 89
1,2,3,4,5
listx
と99, 33, 90, 25, 89
listに解析したいのですがy
、どうすればできますか?
私が理解していない部分は、readline はできるが、2 つのリストに解析する方法がわからないということです。おそらく、スペースで分割して追加する以外に、よりエレガントな方法があると思いwords[0]
ますx
。word[1]
y
次のようなファイルがあります。
1 99
2 33
3 90
4 25
5 89
1,2,3,4,5
listx
と99, 33, 90, 25, 89
listに解析したいのですがy
、どうすればできますか?
私が理解していない部分は、readline はできるが、2 つのリストに解析する方法がわからないということです。おそらく、スペースで分割して追加する以外に、よりエレガントな方法があると思いwords[0]
ますx
。word[1]
y
with open('number-file') as f:
x,y = zip(*(map(int, line.split()) for line in f))
あなたが望むものを手に入れます。
with open('number-file') as f:
読み取り用にファイルを開きます (コードが完了するとファイルを閉じます)。その後、単純に反復できます。
(line.split() for line in f)
行ごとに 2 つの文字列を生成するジェネレータ式です。行ごとに、map(int, line.split())
これらの文字列を整数に変換します。今までの結果はこんな感じ
[[1, 99], [2, 33], [3, 90], [4, 25], [5, 89]]
を使用zip
すると、サブリストの n 番目の要素を結果リストx
とに結合できますy
。
技術的には、x と y はリスト (拡張および変更可能) ではなくタプル(不変) になりました。ほとんどの場合、タプルも同様に機能しますが、本当にリストが必要な場合は、単純に追加します
x,y = list(x), list(y)
left_column = []
right_column = []
with open('your_file') as f:
reader = csv.reader(f, delimiter=' ')
for line in csv_reader:
left_column.append(line[0])
right_column.append(line[1])