2016-11-12 2 views
1

RINEX 관측 파일을 읽고 위성 정보와 비교해야합니다. 지금까지 일부 데이터를 읽었습니다. 따라서 중첩 목록이 있습니다. 이 목록 값을 쉼표로 구분하고 공백에 '없음'을 써야합니다. 목록은 다음과 같습니다.중첩 목록에서 목록 값을 분리하는 방법

oblst = [[' 22527689.086 7     -578290.975 7 -410051.96348 22527682.94948\n', 
      ' 20593906.672 7     -142315.266 7 -103992.19948 20593902.01648\n', 
      ' 22312367.273 6 22312363.496 9 -573672.801 6 -426591.952 9 22312363.52047\n', 
      ' 24649943.453 3     -696710.409 3 -499047.10745 24649943.55545\n', 
      ' 21574180.359 7     -440212.809 7 -323130.81248 21574175.09448\n', 
      ' 20159532.789 7      35621.205 7  26243.45049 20159527.23449\n', 
      ' 24435415.719 6 24435413.602 9 417737.346 6 319304.620 9 24435413.80147\n', 
      ' 23108319.461 5     344109.572 5 249072.03046 23108315.90646\n', 
      ' 21789481.414 7     326180.505 7 238895.05548 21789474.12548\n', 
      ' 21975436.727 7     277875.380 7 205734.181 8 21975443.121 8\n', 
      ' 19981973.117 9     -127270.254 9 -94211.274 9 19981980.414 9\n', 
      ' 21682862.406 6     242033.680 6 179454.101 8 21682869.020 8\n', 
      ' 20647552.734 7     -446216.926 7 -329944.882 9 20647562.945 9\n', 
      ' 23174371.141 6     -645644.090 6 -481288.202 8 23174379.656 8\n', 
      ' 21946454.047 6     420271.088 6 311362.996 8 21946462.590 8\n', 
      ' 21922170.063 8     -124733.763 8 -92183.249 9 21922177.883 9\n'], 
      [......],[......]] 

이렇게 인쇄하고 싶습니다.

oblst = [['22527689.086 7','None','-578290.975 7','-410051.96348','22527682.94948', 
      '20593906.672 7','None','-142315.266 7','-103992.19948','20593902.01648', 
      '22312367.273 6','22312363.496 9','-573672.801 6','-426591.952 9','22312363.52047', 
     ......],[...]] 

마지막으로 oblst [0] [1]을 인쇄하면 다음과 같이 인쇄하고 싶습니다.

'22527689.086 7' 

for 루프를 사용하여이 작업을 시도했습니다. 이것이 내가 코드를 쓴 것입니다.

for lines in oblst: 
    result = [] 
    for line in lines: 
     for k in range(0, len(line)-1, 16): 
      numbers = line[k:k+16].strip() 
      result.append(numbers if numbers else None) 
    print result 

출력은 다음과 같습니다. 그것은 나쁘지 않았습니다.

result = ['22527689.086 7', 'None', '-578290.975 7', '-410051.96348', '22527682.94948', 
      '20593906.672 7', 'None', '-142315.266 7', '-103992.19948', '20593902.01648', 
      '22312367.273 6', '22312363.496 9', '-573672.801 6', '-426591.952 9', '22312363.52047', 
      '24649943.453 3', 'None', '-696710.409 3',...][....]] 

그러나 결과는 [0]입니다. 각 목록의 첫 번째 값이었습니다. 색인은 세로로 설정됩니다.

22527689.086 7 
22524473.070 7 
22521257.078 7 
22518041.602 7 
22514825.805 7 
22511610.484 7 
     . 
     . 
     . 

정말로 도움을 주셔서 감사합니다. 저에게 도움이나 조언을주십시오.

+0

은 당신이 무엇을 시도했다 보여줄 수 있습니까? [그래서] 코드 작성 서비스가 아닙니다. 우리에게 어떤 노력을 보여 주면 우리가 도와 드리겠습니다. – TemporalWolf

+0

그러나 초기 목록에 쉼표가 표시되지 않습니다. 귀하가 제공 한 예를 업데이트하십시오. –

+0

@anonymous 그것은 OP 요청의 일부입니다. "이 목록 값을 쉼표로 구분해야합니다 ..." – davedwards

답변

0

구조가 얼마나 까다 롭습니까? 매우 엄격한 경우 첫 번째 항목을 요구 사항을 충족하는 목록으로 변환하는 예가 있습니다. 그러나 이것은 매우 취약 :

>>> [s.strip() for s in ' None'.join(s.strip().split('     ')).split(' ')] 
['22527689.086 7', 'None', '-578290.975 7', '-410051.96348', '22527682.94948'] 

당신이 다음 ,의와 문자열이 다시 변환 할 경우

>>> ', '.join(s.strip() for s in ' None'.join(s.strip().split('     ')).split(' ')) 
'22527689.086 7, None, -578290.975 7, -410051.96348, 22527682.94948' 
+0

정말 고맙습니다. – Justin