私はcsvを次のように記述しようとしています:data [0] [0]は1行目A、data [0] [1]は1行目Bの場合、data [1] [0]は2行目A、data [1] [1]は2列目Bなどにする必要があります。CSVの列をまたがるPythonループ
次のコードのような非効率なものを使用すると、意図したとおりにCSVに書き込むことができます。
for i in range(0, len(data)-lg):
writer.writerow([data[i][0], data[i][1], data[i][2],...])
本当に次のコードのようなものが必要です。しかし、このコードではすべてをA列に記述していますが、目的を達成するためにはどのように変更できますか?ありがとう。
for i in range(0, len(data)-lg):
for j in range(0, lg+6):
writer.writerow([data[i][j]])
ありがとうございます。 lgは10と30の間の数値です。len(データ)は簡単に10,000+以上にすることができます。ある意味では、lg(実際にはlg + 6)はcsvが持つ列の数です。したがって、10,000以上の行とlg + 6個の列があります。 lgはコード内の他のループと結びついているので重要です。この質問を投稿する前にDan D.のソリューションを試しましたが、データの各行が['blah'、'11/12/2011 '、6,7,8,9]のように見えるという問題があります。したがって、行がCSVに書き込まれるとき、括弧と一重引用符で1つのセルに書き込まれます。私は別々の列に書かれた各値を必要とします。そのため私はデータ[i] [j]を試しました。 – johnjdc
OKだから、もし 'lg'が列の数ならば、' data'ではなく個々の 'row'でスライスしたいと思うでしょう。確認できる場合は、コードを更新します。 csvモジュールは行を適切な列に分割して処理する必要がありますが、それはあなたのために機能していないと言っているようです。私はモジュールを何度も使用していますので、おそらくあなたが提示していないコードに、おそらくライターの初期化の仕方の中に何かがあると思います。 –
私はopen( 'test.csv'、 'wb')をf:とwriter = csv.writer(f)として使用しています – johnjdc