2017-12-25 9 views
-3

노드 좌표 (76 노드)를 읽습니다. 기본적으로 모든 좌표의 문자열을 나눕니다. 분할 후 나는 노드의 좌표에 대한 결과를 가지며, 첫 번째 숫자는 노드의 수이고 따라서 좌표 (x, y)이다. 예 :텍스트 파일에서 마지막 좌표 목록 가져 오기

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

I에만 엔드 노드로 노드 (61)로부터의 좌표를 얻고 싶은

. 비교할 정수로 변환하여 노드 수를 사용하려고합니다. 나는 라인 삭제하지 않으 "동안 라인을! ="EOF "나는 그것을 할 수있는 방법.이 텍스트 파일의 마지막에 나타나 원인?

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() 
     while int(values[0]) > 61: 
      coord.append([float(values[1]), float(values[2])]) 
      line = iFile.readline().strip() 
    iFile.close() 
    return coord 
+0

어떤 문제가 당신이 있습니다 갖는 중? – chrisz

+0

'while ...> 61' 대신'if ...'를 시도하십시오 – wwii

+0

오, 안됩니다. 작동하지 않습니다. int (values ​​[0])를 출력하면 값 1의 무한 루프가 발생합니다. – Anna

답변

0

당신은 같은 while line != "EOF": 안에 if 문을 사용해야합니다 그래서 :

while line != "EOF": 
    values = line.split() 
    if int(values[0]) > 61: 
     coord.append([float(values[1]), float(values[2])]) 
    line = iFile.readline().strip() 

대체 솔루션은 다음 이상의 노드가 큰 제거하는 최초의 6 개 라인과 지능형리스트를 제거 목록 슬라이싱 사용 구멍 파일에 읽을 것 (61)

with open(iFile, 'r') as f: 
     coords = [ line.split(' ') for line in f] # Read every line 
     coords = coords[6:] # Skip first 6 lines 
     coords = [ [x,y] for nr, x, y in coords if int(nr) > 61] # Remove every node large r than after 61