2017-01-13 3 views
1

私はリストのリストを持っています。各リストには6つの要素が必要です。 私のリストは1つのだけの要素(リストを次のチェック最後の要素)が含まれている場合があります。要素を追加するPythonの方法csv.writerows

[['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyonc\xc3\xa9', 'en'], 
['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'], 
['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'], 
['migos t shirt']] 

は、したがって、私は簡単にこれを行うにして、追加することができます

l = ['migos t shirt'] 
l += ['','','','',''] 
ll.append(l) 

がありますこれを行うためのより良い/エレガントな方法? 最終目標はcsv.writerowsでリストのリストを使用し、この場合はコンマの数が一致するようにファイルを6つの要素にすることです。

答えて

4

あなたが取得するために空の文字列['']でリストを掛けることができ、リスト内包

ll2 = [x + ['']*(6-len(x)) for x in ll] 
5

ll = list(map(lambda x: x + ['']*(6-len(x)), ll)) 

に答える@マイクMüller`sによってinsipredこの

ll = list(map(lambda x: x if len(x)==6 else x + ['']*(6-len(x)), ll)) 

を試してみてください空の文字列の数が多いリスト:

ゼロを掛ける
>>> [''] * 3 
['', '', ''] 

はあなたの空のリストを与える:

>>> [''] * 0 
[] 

ご希望のサイズ(6)とlen(line)と、リストの現在の長さの違いを見つけて、できるだけ多く''でリストを追加します

このデータの場合:あなたができる

data = [['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyonc\xc3\xa9', 'en'], 
     ['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'], 
     ['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'], 
     ['migos t shirt']] 

APそれぞれの行の末尾にこれらのプライ:

size = 6 
for line in data: 
    line += [''] * (size - len(line)) 

この結果を得るために:

[['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyoncé', 'en'], 
['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'], 
['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'], 
['migos t shirt', '', '', '', '', '']] 

は、このアプローチは、完全に新しいリストを作成し、リストの内包に比べてリストを変更します。これは大きなリストには本当に便利です。さらに、すべての行が既に6要素長い場合、元のリストには変更はありません。元のリストがすでに完全な形であっても、リストの理解は新しいリストを作成します。すなわち、すべてのサブリストに6つの要素を有する。

関連する問題