2017-08-30 5 views
1

私は以下のようなリストを持っています。 a = [[1,2,3]、[2,3,4]、[3,4,5]]Pythonでcsvの特定の列からリストを書く

また別の名前リストがあります names = ['Ann'、 'john私は私が現在使用しています

1st row: Ann,1,2,3 
2nd row: john,2,3,4 
3rd row: smith,3,4,5 

以下のようにcsvファイルにこれを書きたい」、 『スミス』]今

with open(output_file, 'w') as f: 
     writer = csv.writer(f) 
     writer.writerows(a) 

しかし、常に2番目の列ではなく最初の列から開始するため、必要なジョブは実行しません。私を助けてください。

答えて

0
with open(output_file, 'w') as f: 
    f.write('\n'.join([elem[0]+','+str(elem[1]).strip('[').strip(']') for elem in zip(names,a)])) 

これを試してください。

1

ここで理解する重要な点は、リストを並列に処理したいということです。。これは、組み込み関数zipを使用すると簡単に実行できます。 iterableのリストを取得し、各繰り返しの中のn番目の要素をタプルとして返します。その後、str.formatを使用して行をフォーマットすることができます:あなたのリストのサイズが異なる場合

names = ['Ann', 'john', 'smith'] 
sublists = [[1,2,3], [2,3,4], [3,4,5]] 

with open(output_file, 'w') as file: 
    for name, sublist in zip(names, sublists): 
     row = '{},{},{},{}'.format(name, *sublist) 
     file.write(row) 

注意を、あなたはitertools.zip_longestを使用してに見てみたいことがあります。

0
with open("output_file", 'w') as f: 
    f.write("\n".join([','.join(map(str, [name] + extra)) for name, extra in zip(name, extras)]) 
関連する問題