如何将多行和一列从一个CSV文件复制到另一个CSV Excel?

时间:2015-12-17 09:08:00

标签: python excel csv

我是python的新手(编码,就此而言)。 我可以请一些帮助,我怎样才能实现这一目标。我经历了很多线程,但没有任何帮助。

我的输入文件如下所示:

enter image description here

我希望我的输出文件看起来像这样:

enter image description here

只需复制第一列,在第二个Excel工作表中复制两次。每5行后有一行。

3 个答案:

答案 0 :(得分:0)

可以使用普通文本编辑器打开.csv文件,执行此操作,您将看到每列的条目以逗号分隔(csv =逗号分隔值)。不过,很可能是它的分号;

由于您不熟悉编码,我建议您首先使用文本编辑器手动尝试,直到获得所需的输出,然后尝试使用python进行复制。

此外,您应该在此处发布代码示例,并询问有关其为何无法正常工作的具体问题。

答案 1 :(得分:0)

以下是解决方案。不要忘记配置输入/输出文件和分隔符:

input_file = 'c:\Temp\input.csv'
output_file = 'c:\Temp\output.csv'
delimiter = ';'

i = 0
output_data = ''
with open(input_file) as f:
    for line in f:
        i += 1
        output_data += line.strip() + delimiter + line
        if i == 5:
            output_data += '\n'
            i = 0

with open(output_file, 'w') as file_:
    file_.write(output_data)

答案 2 :(得分:0)

Python有一个csv模块用于执行此操作。它能够自动将每行读入列列表。然后可以简单地取出第一个元素并将其复制到输出文件的第二列中。

import csv

with open('input.csv', 'rb') as f_input:
    csv_input = csv.reader(f_input)
    input_rows = list(csv_input)

with open('output.csv', 'wb') as f_output:
    csv_output = csv.writer(f_output)

    for line, row in enumerate(input_rows, start=1):
        csv_output.writerow([row[0], row[0]])

        if line % 5 == 0:
            csv_output.writerow([])

请注意,建议不要直接在输入文件上写入更新的数据,就好像存在丢失原始文件的问题一样。

如果您的输入文件有多列,则此脚本将删除它们并简单地复制第一列。

默认情况下,csv格式使用逗号分隔每个列,可以通过指定所需的分隔符来修改,如下所示:

csv_output = csv.writer(f_output, delimiter=';')