2012-11-08 5 views
1

파이썬을 사용하여 좌표 세트 파일을 읽어야합니다. 첫 번째 행의 숫자는 n이며 읽어야하는 좌표 세트 수입니다. 첫 번째 줄 다음에 n 줄이 표시되며 각 줄에는 단일 좌표 쌍이 들어 있습니다.파이썬을 사용하는 파일에서 n이 n 번째 줄을 읽는 방법은 무엇입니까?

실시 예 (이 경우, N = 4)

n 
(x,y) 
(x,y) 
(x,y) 
(x,y) 

캐치 파일의 여러 부분이 될 것이라는 것이다. 따라서 첫 번째 n은 10 세트, 10 세트의 좌표 및 다음 n은 20 일 수 있으며 그 다음에 20 세트의 좌표가있을 수 있습니다.

지금 난 그냥 별도의 좌표의 섹션을 읽고 있어요 현재로

,하지만 난 파일의 좌표의 수의 섹션 내가에서 읽고 있어요 수 있다면 나는 그것을하고 싶습니다.

+4

당신은 무엇을 시도 이러한 변환 할 수 있음? 나는 당신이'n' 라인의 라인을 읽고, 다음'n' 라인의 라인을 읽은 후에 다시 시작할 수 있다고 생각합니다. –

답변

4

당신은 사용할 수 있습니다 open()은 읽기 용으로 파일을 열고, 줄 단위로 파일 내용을 읽으려면 readline()을, 문자열로 변환하려면 int()을 사용합니다. 발전기를 사용에

def read_coords(file_handle): 
    try: 
     nrecords = int(file_handle.readline()) 
    except ValueError: 
     return False 
    return [file_handle.readline() for i in range(nrecords)] 

coord_sets = [] 
with open("some.txt") as f: 
    coords = read_coords(f) 
    while coords != False: 
     coord_sets.append(coords) 
     coords = read_coords(f) 

print "coord_sets =",coord_sets 
1

봐 :

다음은이 부품을 사용하여 구현 한 예입니다. 당신은 발전기를 통해 첫 선을 읽을 수 후 다음 읽기까지 산출하기 위해 얼마나 많은 라인 말할 것이다 : 내가 제대로 이해하면

def gen_coord(a_file): 
    num = 0 
    for line in a_file: 
     if num == 0: 
      num = int(line) 
     else: 
      num -= 1 
      yield line 

source = open("somefile") 
coords = gen_coord(source) 
for coord in coords: 
    print (coord) 
1

, 당신은 현재 선두 n 값과 다른 파일에 읽고 n 개의 좌표가 뒤 따른다. 그러나, 당신은 이것을 하나의 파일로하고 싶습니다.

중첩 목록을 만들고 서식 목록을 기반으로 기본 목록에 코드 목록을 추가 할 수 있습니다.

coord_list = [] 
myfile = open('coords.txt','r') 
while 1: 
    coord_count = myfile.readline().replace('\n','') 
    if not coord_count: 
     break 
    coord_list.append([myfile.readline().replace('\n','') for i in range(int(coord_count))]) 

print coord_list 
  • 참고 : 당신은 아직도 '(X, Y)의
+0

스카 이프 나 이메일로 연락 드릴 수 있습니까? 이 접근법에 대해 더 자세히 이야기하고 싶습니다. – trainreq

+0

당신은 저에게 [email protected]에서 이메일을 보낼 수 있습니다. 네가 뭘 알고 싶은지 알려주지. 또한,이 대화방에서 나에게 메시지를 보낼 수 있습니다 : http://chat.stackoverflow.com/rooms/6/python –

관련 문제