2016-11-09 3 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

を、それがどのようにstackoverflowの作品ではないので、私はすぐにあなたの質問に答えられないだろうが、私はあなたにいくつかのヒントを与えるだろう。

HINTS

  • まず、あなたはfor loopを使用して、最初のリストlstの各行を反復処理することができます。

  • 次に、この行のすべての番号を分割する必要があります。幸いなことに、常に16文字かかりました。 Pythonでは、これを行う方法がいくつかあります。 range functionforループで使用することをお勧めします。次に、Python文字列にslicingを使用します。

  • ここで、すべての数字の冒頭に余分なスペースが残っている可能性があります。これらを削除するには、strip() functionを使用することをおすすめします。あなたがする必要がある

  • 最後の事は、私は仕事関数との私の答えを編集する新しいリストにappendすべてのきれいな文字列(例えばresult

END

にありますあなたが適切な試行であなたを編集するとすぐに。がんばろう!

EDIT

私の同名@Maxチェスターフィールドには、すでに答えを与えたので、私は私を与えるでしょう。私はここにいくつかの仮定を作りました、そしてこれはおそらくない

['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

:代わりに、リストのリストを使用して、あなたは正確に所望の出力

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) 

ウィル出力に一致するようにgeneratorを使用することができます最もエレガントな解決策が、これは現在、リスト内包として実装されている

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

スペースの長さに基づいて、あなたのマッチングなし、これは動作しませんことを考えると、BU tは簡単な

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

@Ennaよりも、彼女が編集したり(回答を受け入れること)(http://stackoverflow.com/help/accepted-answer)、リスト内のサブリストの代わりに 'ジェネレータ'私の答えを見てください)。 –

+1

@Max Chretein、私はそれを知りませんでした!情報をありがとう :) –

関連する問題