-2
import csv

with open( "example.csv" , "r") as csv_file:
    csv_reader = csv.reader(csv_file)

    with open("edited.csv", "w", newline='') as new_file:

        csv_writer = csv.writer(new_file)

        for line in csv_reader:
            csv_writer.writerow(line)

这是我的代码。我能够从桌面上的 csv 文件中读取数据,并将相同的数据重写到指定位置的另一个 csv 文件中。但我的问题是,当我重写数据时,我只想编辑/更改我的标题所在的第一列。我想重命名标题名称并添加新列(仅标题)

这是我的示例 CSV,我想在其中读取并获取所有数据

在此处输入图像描述

a)我想保留相同的数据:从 A 到 K(包括 K 列)检查上面的示例图像

b) 我只想修改 L 列和 M 列上的列标题(起初它们是 Person L 和 Person M)。在我编辑的文件中,我想将它们更改为新标题 L、新标题 M

c)在 M 列之后,我想在 T 列之前添加额外的列标题名称(新标题 N、新标题 O、新标题 P、新标题 Q、新标题 R、新标题 S、新标题 T)

最后我想要的文件需要看起来像这样 在此处输入图像描述

所以我想阅读,同时编辑我的 csv 并将编辑后的新文件存储在我的桌面/等位置。到目前为止,我只能使用 python 复制粘贴相同的数据,并且无法编辑或添加新标题。非常感谢。很抱歉给我带来不便,我是编程新手:)

4

2 回答 2

0

您必须在此循环中更改修改。

   for line in csv_reader:
        new_line = modify(line)
        csv_writer.writerow(new_line)

这将起作用,因为这里line是字符串列表。因此,如果您的字符串位于第一列,则可以使用line[0]. 这适用于每一行。要获取当前行索引,enumerate可以使用。然后代码变成

   for row_index, line in enumerate(csv_reader):
        new_line = modify(row_index, line)
        csv_writer.writerow(new_line)

注意我添加了一个modify功能。现在,如果我们modify用您的逻辑实现该功能,那么问题可以很容易地解决。

def modify(row_index, line):
    title_names = ["N", "O", "P", "Q", "R", "S", "T"]
    if row_index == 0:
        line[11] = "New Title L"
        line[12] = "New Title M"

    # Also add 7 more columns
    if row_index == 0:
        line.extend(["New Title %s" % n for n in title_names])
    else:
        # Add empty columns to make sure column size is always same.
        line.extend([""] * 7)
    return line
于 2020-05-18T14:32:51.040 回答
0
import csv

定义一个函数以在 CSV 文件上添加 7 个更多标题

def modify (row_index, line):

    if row_index == 0: 
        line.extend(["New Title L","New Title M",
                     "New Title N", "New Title O", "New Title P", "New Title Q", "New Title R", "New Title S", "New Title T"])
    else:
        line.extend([""] * 7)
    return line

打开我们给出确切目录的文件并将其存储为变量“csv_file”

with open("C:/Users/LOGIN/Desktop/Example1.csv" , "r") as csv_file:
            csv_reader = csv.reader(csv_file)

# and opening second file with writer function on directory we designated to. This will write everything line by line from the file we opened above. In addtion, with "modify" function it adds 7 more lines that we defined. New CSV file will be on the desktop.


            with open("C:/Users/LOGIN/Desktop/new_edited_file.csv", "w", newline='') as new_file:

                csv_writer = csv.writer(new_file)

                for row_index, line in enumerate(csv_reader):
                    new_line = modify(row_index, line)
                    csv_writer.writerow(new_line)
于 2020-05-21T09:35:17.530 回答