3

Python を使用して既存の .csv ファイルに書き込もうとしていますが、既存のファイルの末尾にデータを追加する代わりに、新しい情報を .csv ファイルの新しい列に追加したいと考えています。この理由は、コードの読み取りデータ セクションを「無限に」ループし、各ループ反復中に読み取ったデータを行ではなく新しい列に追加したいからです。本質的に、私は次のようなものが欲しいです:

Row1Iteration1, Row1Iteration2, Row1Iteration3,..., Row1IterationX
Row2Iteration1, Row2Iteration2, Row2Iteration3,..., Row2IterationX
Row3Iteration1, Row3Iteration2, Row3Iteration3,..., Row3IterationX
Row4Iteration1, Row4Iteration2, Row4Iteration3,..., Row4IterationX
Row5Iteration1, Row5Iteration2, Row5Iteration3,..., Row5IterationX

それ以外の:

Row1Iteration1
Row2Iteration1
Row3Iteration1
Row4Iteration1
Row5Iteration1
Row1Iteration2
Row2Iteration2
Row3Iteration2
etc...

これを行う方法を知っている人はいますか、これは .csv ファイルの不可能な制約ですか? .csv 以外に、これを実行して Excel で操作できる別の方法はありますか?

4

3 に答える 3

2

この例がお役に立てば幸いです。

# of course you should read the file someway
s = """
Row1Iteration1, Row1Iteration2, Row1Iteration3
Row2Iteration1, Row2Iteration2, Row2Iteration3
Row3Iteration1, Row3Iteration2, Row3Iteration3
Row4Iteration1, Row4Iteration2, Row4Iteration3
Row5Iteration1, Row5Iteration2, Row5Iteration3
"""
ncols = 3

iterations = []
for line in s.strip().split('\n'):
    iterations.append([l.strip() for l in line.split(',')])

with open('output.csv', 'w') as out:
    for col in xrange(ncols):
        for it in iterations:
            print it[col]
            out.write(col)
于 2012-11-12T19:37:13.757 に答える
2

これは、私が知っているシステムまたはファイルの種類では不可能です。データを読み込んで操作し、元のファイルを保存/上書きする必要があります。これは、ほぼすべてのオペレーティング システムでファイル I/O が機能する方法です。ファイルの読み取り、ファイルの (上書き) 書き込み、ファイルの末尾への追加、それだけです。

ファイルが非常に大きい場合は、ファイルを 1 つずつ読み取り、操作を行い、それらを一時ファイルに書き込むことができます。完了したら、元のファイルを新しい一時ファイルに置き換えることができます。

于 2012-11-12T18:45:05.197 に答える
0

Chinmay が言ったように、あなたの最善の策は、csv ファイルを読み込んで、それをマッサージしてから、csv に出力することです。あなたが求めているものに似たものに対処しているように見えるこのstackoverflowの議論を見てください。

于 2012-11-12T18:56:44.660 に答える