如何在嵌套列表中分隔列表值

时间:2016-11-12 00:17:45

标签: python list for-loop split nested-lists

我必须阅读RINEX观察文件并与卫星信息进行比较。 到现在为止,我读了一些数据。所以,我有一个嵌套列表。我必须用逗号分隔这个列表值,并在空格中加上'None'。列表是这样的;

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
      .
      .
      .

我非常感谢您可以帮助或给我任何建议。 请帮忙或给我任何建议。

1 个答案:

答案 0 :(得分:0)

结构有多严格?如果它非常严格,那么这里是将第一个项目转换为符合您要求的列表的示例。但是,这非常脆弱:

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

如果你想将它转换回, s的字符串,那么:

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