1

input.csv (1 つの列countで構成される) と output.csv (1 つの列idで構成される)という名前の 2 つのファイルがあります。id列の直後に、 count
列を output.csv に貼り付けたいと思います。

ここに私のスニペットがあります:

with open ("/home/julien/input.csv", "r") as csvinput:
    with open ("/home/julien/excel/output.csv", "a") as csvoutput:
        writer = csv.writer(csvoutput, delimiter = ";")

        for row in csv.reader(csvinput, delimiter = ";"):
            if row[0] != "":
                result = row[0]
            else:
                result = ""  

             row.append(result)
         writer.writerow(row)

しかし、うまくいきません。

私は何時間も問題を探してきましたが、解決策がありません。私の問題を解決するための秘訣はありますか?
ありがとう!ジュリアン

4

3 に答える 3

1
  1. 入力用に両方のファイルを開きます。
  2. 出力用に新しいファイルを開きます。
  3. ループ内で、それぞれから行を読み取り、出力行をフォーマットしてから、出力ファイルに書き込みます
  4. すべてのファイルを閉じる
  5. 入力ファイル「output.csv」の上に出力ファイルをプログラムでコピーします。

終わり

于 2013-06-08T23:47:30.890 に答える
1

読み取り用に 2 つ、書き込み用に 1 つの 3 つのファイルを操作する必要があります。これはうまくいくはずです。

import csv

in_1_name = "/home/julien/input.csv"
in_2_name = "/home/julien/excel/output.csv"
out_name = "/home/julien/excel/merged.csv"

with open(in_1_name) as in_1, open(in_2_name) as in_2, open(out_name, 'w') as out:
    reader1 = csv.reader(in_1, delimiter=";")
    reader2 = csv.reader(in_2, delimiter=";")
    writer = csv.writer(out, delimiter=";")
    for row1, row2 in zip(reader1, reader2):
        if row1[0] and row2[0]:
            writer.writerow([row1[0], row2[0]])

各列の行を次のように記述します。

            row.append(result)
            writer.writerow(row)

最後の行をデデントして、1 回だけ書き込みます。

            row.append(result)
        writer.writerow(row)
于 2013-06-08T23:59:37.277 に答える
0

2 つのテーブルが与えられた場合、それぞれの最初の列を使用してそれらをマージするのは非常に簡単です。私のライブラリpyexcelでは、テーブルをマージするのと同じようにマージを行います:

>>> from pyexcel import Reader,Writer
>>> f1=Reader("input.csv", delimiter=';')
>>> f2=Reader("output.csv", delimiter=';')
>>> columns = [f1.column_at(0), f2.column_at(0)]
>>> f3=Writer("merged.csv", delimiter=';')
>>> f3.write_columns(columns)
>>> f3.close()
于 2014-10-19T23:36:51.030 に答える