2016-11-09 58 views
-1

输入:变换列表

lst=[ ' 22774080.570 7     1762178.392 7 1346501.808 8 22774088.434 8\n', 
    ' 20194290.688 8     -2867460.044 8 -2213132.457 9 20194298.629 9\n'] 

所需的输出:

['22774080.570 7','none','1762178.392 7','1346501.808 8','22774088.434 8'], 
['20194290.688 8','none','-2867460.044 8', .... ] 
+0

你有什么尝试,你会得到更好的回应,如果你显示一些尝试解决问题。 – AChampion

回答

0

我不会回答你的问题的时候了,因为它不是如何计算器的作品,但我会给你一些提示。

HINTS

  • 首先,您可以通过使用for loop第一个列表lst的每一行迭代。

  • 然后,你需要拆分这一行的每一个数字,幸运的是,它总是花费16个字符。 在Python中,有severals办法做下去。对您的良好培训将在for循环中使用range function。然后在Python字符串中使用slicing

  • 现在,它可能会在每个数字的开头保留一些额外的空格。除去他们的一个好方法是使用strip() function

  • 你需要做的最后一件事就是append干净串到一个新的列表(例如result

END

我将编辑我的回答与工作功能只要你适当的尝试编辑你的。祝你好运!

编辑

因为我同名@Max切斯特菲尔德已经作出了回答,我给我的。而不是使用列表的列表,你可以使用一个generator精确匹配所需的输出

def extract_line(): 
    for line in lst: 
     result = [] 
     for i in range(0, len(line) - 1, 16): 
      numbers = line[i:i + 16].strip() 
      result.append(numbers if numbers else None) 
     yield result 

for result in extract_line(): 
    print(result) 

将输出:

['22774080.570 7', None, '1762178.392 7', '1346501.808 8', '22774088.434 8'] 
['20194290.688 8', None, '-2867460.044 8', '-2213132.457 9', '20194298.629 9'] 
0

我在这里做了一些假设,这可能不是最优雅的解决方案,但考虑到基于空间的长度您匹配的无,这将工作

[[(None if a.strip() == 'None' else a.strip()) 
    for a in l.replace('     ', ' None ').split(' ') if a != '' 
    ] for l in lst] 

这是目前作为一个列表理解来实现,BU吨可以很容易地扩展到多个线,用于可读性这样

new_list = [] 
for l in lst: 
    sub_list = [] 
    for a in l.replace('     ', ' None ').split(' '): 
     if a != '': 
      item = a.strip() 
      sub_list.append(None if item == 'None' else item) 
    new_list.append(sub_list) 

任一方法得到相同的结果:

[ 
[ 
    '22774080.570 7', None, '1762178.392 7', '1346501.808 8', '22774088.434 8' 
], 
[ 
    '20194290.688 8', None, '-2867460.044 8', '-2213132.457 9', '20194298.629 9' 
] 
] 

记住,到的空间中使用的宽度的任何变化,以限定“无”将影响此实施的功能。

+0

因为我怀疑她会编辑或[接受答案](http://stackoverflow.com/help/accepted-answer),但是你可以使用'generator'而不是列表中的子列表看到我的答案)以匹配所需的输出。 –

+1

@Max Chretein,我不知道!谢谢(你的)信息 :) –