2017-02-09 5 views
0

나는 일반적으로 코딩에 익숙하지 않고 일부 데이터를 자르는 데 문제가 있습니다. 그것은 간단한 텍스트 파일에 있으며 파일에서 하나의 큰 텍스트 문자열을 가져 와서 목록 내의 개별 값 (예 : index [0] = -78.5)으로 분할했습니다. 상기리스트의 처음 두 인덱스는 각각 위도와 경도이며, 다음 240은 값 (분석하고자하는 데이터)입니다. 거기에서 다음 두 값은 위도와 경도입니다. 다시 말해 인덱스 [242]와 [243]은 각각 위도와 경도입니다.파이썬 - 조각에서 목록 내에 여러 목록 만들기

첫 번째 242 개의 색인 (lat, lon 및 240 개의 개별 값)을 꺼내 목록에 넣은 다음이 목록을 반복하여 '마스터' 목록, 중첩 목록 만들기 나는 목록의 끝에 도달 할 때까지 이것을하고 싶다. 나는 242 단계를 원한다는 것을 의미한다. 최종 결과는 다음과 비슷한 모습이 될 것입니다

master_list = [[위도, 경도, 240 개 값이 ...], [위도, 경도, 240 개 값이 ...], ...]

내가 필요 이것은 내가 위도와 경도에 개별적으로 접근 할 수 있도록하는 동시에 좌표계를 기반으로이 데이터를 자르기 때문에 그 목록의 값과 연관성을 유지합니다.

f = open('file.txt', 'r') 
file_contents = f.read() 
f.close() 

single_obs = file_contents.split(" ") 
new_list = [] 
blank_value = single_obs[0] 

def remove_blankspace(my_list): 
    for i in my_list: 
     if i != blank_value: 
      new_list.append(i) 
    return new_list 
remove_blankspace(single_obs) 

print new_list[0] 

이 기본적으로 그냥 날이 파일에서 빈 공간을 제거하고 목록에서 개별 요소로 문자열을하고있다 :

지금까지,이 있습니다. 'new_list'에는 많은 요소가 있습니다!

나는 시험으로 이것을 시도,하지만 난 방법 벗어났다, 나는 내 컴퓨터를 다시 시작했다 이후는 무한 루프를 만들 생각 :

indiv_values = [] 

for value in new_list: 
    line = new_list[::239] 
    indiv_values.append(line) 

print indiv_values[0] 

내가 이전 라인으로 라인을 분할 시도를 각 있기 때문에, line은 lat, lon 및 240 값을 포함합니다. 나는 각 줄을 포함하는 목록을 만들 수 있었지만 각 줄의 모든 값을 개별 요소로 분리 할 수는 없었다.

죄송합니다. 끔찍한 설명이거나 (코딩에 새로운!) 달성하고자하는 것이 명확하지 않더라도 불분명 한 부분이 있는지 물어보십시오! 파일이 보이는 것을 가정

+1

나는 이것을 제안하는 것을 당황스럽게 생각하지만 데이터는 제 3 자 numpy 라이브러리의 이점을 누릴 수있는 것처럼 들린다. 와이. 덧붙여 말하면, 2D 배열로 슬라이스하는 것은 완전히 자연스럽고 효율적입니다. 당신은 numpy 배열을 살펴보아야한다. 그것들은 (네모 모양의 네스트 된리스트를 가진 한) 데이터 -y에 매우 적합하다. –

+0

@AndrasDeak : 오프 사이트 참조에 대한 포스터를달라고하는 포스터는 눈살을 찌푸리고 있지만 솔루션으로 제공하는 것은 잘못된 것이 아닙니다. 나는 투표했다. – Prune

+0

@Prune thanks :) 적절한 이유가 없으면 너무 자주 제안되기 때문에 대부분은 시선을 사로 잡았습니다. 적절한 도구가 내장되어 있으면 가져 오기에 비용이 많이 드는 서드 파티 라이브러리입니다. 다른 사람들이 말했듯이 "numpy는 python의 [jquery] (http://meta.stackexchange.com/a/19492/313143)입니다." –

답변

0

같은 :

lat1, lon1, values... 
lat2, lon2, values... 
... 

그리고 당신은 당신이 할 수있을 것입니다 무엇을 설명에서

:

with open("file.txt", "r") as fobj: 
    file_contents = fobj.read() 

llv = list() 
for line in file_contents.strip("\n").split("\n"): 
    data = line.split(" ") 
    # process however you want 
    llv.append([data[0], data[1], data[2:]) 

이 당신에게 다음과 같은 목록 (LLV)을 줄 것이다 :

[[lat1, lon1, [values...]], [lat2, lon2, [values2...]], ...] 
+0

감사합니다. 나는 각각의 위도와 경도와 같은 목록에 값이있는 목록으로 끝내기를 원한다. [[lat1, lon1, values, values, ...], [lat2, lon2, values2, values2, ...], ...] 파일도 쉼표로 구분됩니다. 공백으로 구분됩니다. 당신의 도움을 주셔서 감사합니다! –