2017-12-24 20 views
0

私はすべてのノードの座標列を持っています。基本的には、文字列を座標のペア(x​​、y)に分割します(これはコードの一部の結果です:values = line.split())。 「値」を印刷すると、結果は以下のようになります。リストプールから最初の座標リストを取得する

['1', '3600', '2300'] 

['2', '3100', '3300'] 

['3', '4700', '5750'] 

['4', '5400', '5750'] 

['5', '5608', '7103'] 

['6', '4493', '7102'] 

['7', '3600', '6950'] 

私は座標が7つのノードを持っています。しかし、最初の5つのノードを使用して座標リストに追加し続けたいと思います。私はそれをどのようにすることができますか?

私のコードは次のとおりです。

def read_coordinates(self, inputfile): 
    coord = [] 
    iFile = open(inputfile, "r") 
    for i in range(6): # skip first 6 lines 
     iFile.readline() 
    line = iFile.readline().strip() 
    while line != "EOF": 
     **values = line.split()** 
     coord.append([float(values[1]), float(values[2])]) 
     line = iFile.readline().strip() 
    iFile.close() 
    return coord 
+0

申し訳ありませんが、あなたが言うことを理解できません。 自分で言い換えてみてください。 – oBit91

+0

私はすでにそれをクリアしました:)ありがとう。 – Anna

答えて

0

変更あなたのコードを次のように

def read_coordinates(self, inputfile): 
    coord = [] 
    iFile = open(inputfile, "r") 
    for i in range(6): # skip first 6 lines 
     iFile.readline() 
    line = iFile.readline().strip() 
    i = 0 
    while i < 5 
     values = line.split() 
     coord.append([float(values[1]), float(values[2])]) 
     line = iFile.readline().strip() 
     i += 1 
    iFile.close() 
    return coord 

を今、あなたのループは最初の5つのノード

をするためにあなたの結果が得られます最初の5行に対して実行する一方
+0

それは動作します。どうもありがとう。 – Anna

+0

ノード4からノードに読み込みたい場合はどうすればいいですか?しかし、私は "line!=" EOFコードを削除したくありません。文字列の最後に "EOF"という文字列があります。 – Anna

+0

ノード4からエンドノードまでの読み取りを意味しますか? – Jai

0

おそらくこれは、コンテキストマネージャを使って関数をより細かく保つという追加のボーナスと共に、このトリックを行うでしょう。

def read_coordinates(self, inputfile): 

    coord = [] 
    with open(inputfile, "r") as iFile: 
     for i in xrange(6): # Skip first 6 lines 
      next(iFile) 

     for i in xrange(5): # Read the next 5 lines 
      line = iFile.readline().strip() 
      values = line.split() 
      coord.append([float(values[1]), float(values[2])]) 
    return coord 
関連する問題