-3

次のようなファイルがあります。

1 99
2 33
3 90
4 25
5 89

1,2,3,4,5listx99, 33, 90, 25, 89listに解析したいのですがy、どうすればできますか?

私が理解していない部分は、readline はできるが、2 つのリストに解析する方法がわからないということです。おそらく、スペースで分割して追加する以外に、よりエレガントな方法があると思いwords[0]ますxword[1]y

4

2 に答える 2

5
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)
于 2013-01-03T01:02:04.883 に答える
1
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])
于 2013-01-03T01:01:39.543 に答える