1

我有 2 个名为 input.csv (由一列count组成)和 output.csv (由一列id组成)的文件。
我想将我的计数列粘贴到 output.csv 中,就在id列之后。

这是我的片段:

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

您需要处理三个文件,两个用于读取,一个用于写入。这应该有效。

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)

减少最后一行只写一次:

            row.append(result)
        writer.writerow(row)
于 2013-06-08T23:59:37.277 回答
1
  1. 打开两个文件进行输入。
  2. 打开一个新文件进行输出。
  3. 在一个循环中,从每个读取一行,格式化一个输出行,然后将其写入输出文件
  4. 关闭所有文件
  5. 以编程方式将您的输出文件复制到输入文件“output.csv”之上。

完毕

于 2013-06-08T23:47:30.890 回答
0

如果给任何人两个表,使用每个表的第一列合并它们是非常容易的。使用我的 library 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 回答