【问题标题】:Inserting a colum from an existing csv file into another csv file using python使用python将现有csv文件中的列插入另一个csv文件
【发布时间】:2021-05-08 16:52:40
【问题描述】:

我有两个列数相同的 CSV 文件。

我想将文件 1 作为第一列插入到 file2 中,并将输出生成为新的 CSV 文件。

输入文件:

需要的输出文件:

【问题讨论】:

    标签: python python-3.x csv write


    【解决方案1】:

    我将从代码示例开始(我直接根据您在帖子中提供的数据基于 test1 和 test2.csv):

    ## Read first csv into list
    f = open("test1.csv", "r")
    csv1 = f.readlines()
    f.close()
    
    ## Read second csv into list
    f = open("test2.csv", "r")
    csv2 = f.readlines()
    f.close()
    
    ## Create new csv header
    header = csv1[0].replace("\n", "") + "," + csv2[0].replace("\n", "")
    
    ## Create data list and append lines from csv1 and csv2
    data = []
    for x in range(1, len(csv1)):
        data.append(csv1[x].replace("\n", "") + "," + csv2[x].replace("\n", "") + "\n")
    
    ## Print new header and data to a new csv file
    f = open("test3.csv", "w")
    f.write(header + "\n")
    f.writelines(data)
    

    这方面的 cmets 非常简单明了,让您知道每个代码块完成了什么。

    在假设没有键将数据从一个文件关联到另一个文件的情况下,这样做是可行的(就像在数据库中,您有一个 ID 可以在表之间关联)。

    您也可以使用内置的 csv 库并将其分解为函数等,但对于如此简单的事情,我发现像我一样将其写出来更容易。

    这是输出:

    offset,status,value
    1,ok,12
    2,nok,13
    3,ok,14
    

    【讨论】:

      【解决方案2】:

      您可以使用以下方法同时遍历两个文件:

      file1 = open("test1.csv", "r")
      file2 = open("test2.csv", "r")
      file3 = open("test3.csv", "w")
      for line1, line2 in zip(file1, file2):
          file3.write(line1+line2+"\n")
      file1.close()
      file2.close()
      file3.close()
      

      这假定两个文件具有相同的行数。如果这不是真的,这种方法只会连接行直到较短的文件结束。 即:如果 file1 有 10 行,而 file2 有 15 行,则输出文件将忽略 file2 的最后 5 行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-10
        • 2021-05-27
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多