2014-04-19 2 views
-1

저는 파이썬에 초보자입니다. 힘든 문제를 겪어 많은 것을 배웠습니다. 이 문제를 해결하기 위해 지역 사회의 도움이 필요합니다. 다음 데이터가있는 텍스트 파일이 있습니다.파이썬 : 텍스트 파일에서 맵 (터플) 만들기

block=("river",4,(-500, -360),(-500, 360),(500, 360),(500,-360)), ("sand", 3,(400,300), (500, 300), (200, 100)) 

이 지금까지 내 코드입니다

file=open("file.txt", "r") 
lineString=file.readlines() 

제발 돈 :

river,4 
-500, -360 
-500, 360 
500, 360 
500,-360 

sand, 3 
400, 300 
500, 300 
200, 100 

내 문제는 내가이 파일을로드하고 다음을 같이 보이는 tuple를 만들 필요가있다 아무 이유없이 나를 슬퍼하지 마라. 나는 커뮤니티에 익숙하지 않고 파이썬을 배우고있다.

+0

유감 오타입니다. 나는 – don

+0

파일을 수정했다. 입력 데이터에서'river' 다음에'4'에 대해 무엇을 했습니까? 그 물질인가요? – iruvar

+0

나는 그 물질을 – don

답변

0

이 당신이 원하는 당신을 줄 것이다 : 나는 데이터를 정리하는 방법을 말을해야

import csv 

output = [] 
block =() 
with open('input_file') as in_file: 
    csv_reader = csv.reader(in_file) 
    for row in csv_reader: 
     output.append(tuple(row)) 

first_element = output[0] 
a, b, c, d = output[1:] 
block = (first_element[0], a, b, c, d) 

인쇄

("river",(-500, -360),(-500, 360),(500, 360),(500,-360)) 

나에게 아무 의미가 없습니다. 위의 코드는 river, 4 행 다음에 4 행이있는 경우에만 작동합니다. 이 경우 더 대체 :

a, b, c, d = output[1:] 
block = (first_element[0], a, b, c, d) 

block = (first_element[0], output[1:]) 

으로하지만,이 경우에 출력 될 것입니다 :

("river",[(-500, -360),(-500, 360),(500, 360),(500,-360)]) 
+0

a, b, c, d = 출력 [1 :] – don

+0

@ drunkenmaster에서 압축을 풀 수있는 값이 너무 많습니다. 내 솔루션은 엄격하게 4 개의 값이있는 위의 예를 대상으로했습니다. 이유를 알기 위해 업데이트 된 답변을 확인하십시오. – shaktimaan

관련 문제