从 csv 文件读取、编辑和写入数据

Reading, editing and writing data from a csv file

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 文件中。但我的问题是,虽然我是 re-writing 数据,但我只想 edit/change 我的标题所在的第一列。我想重命名标题名称并添加新列(仅标题)

这是我的示例 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 并将编辑后的新文件存储在我的 desktop/etc 位置。到目前为止,我只能使用 python 复制粘贴相同的数据,无法编辑或添加新标题。非常感谢。很抱歉给您带来不便,我是编程新手:)

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

   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
import csv

正在定义一个函数以在 CSV 文件中再添加 7 个 headers

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)