【问题标题】:Python CSV: selecting only specific column headersPython CSV:仅选择特定的列标题
【发布时间】:2015-04-02 13:37:31
【问题描述】:

关于Python中的csv模块:

示例 - 第一个文件的内容:

file1.csv, file2.csv, header1, header2
file3.csv, file4.csv, header1, header2, header5
file5.csv, file6.csv, header2

我读取了第一个文件(file1.csv),只需要导出带有 header1 和 header2 的列。

对于下一个文件(file3.csv),我只需要将header1、header2和header5导出到file4.csv即可。

我有一个包含所有标题名称的数组 (myParameters = row["targetcolumns"],我需要在创建行时以某种方式循环它,将其写入文件,然后继续下一行。

我不知道该怎么做。

问题是有时我需要 4 个标题,下一次只有一个,...

【问题讨论】:

    标签: python csv


    【解决方案1】:

    假设你有一个字典,每行都有 {header:value} ,那么你可以简单地:

    for row in rows:
        csv.writerow([row[h] for h in myParameters])
    

    那么对于每个文件,myParameters 会有所不同。

    【讨论】:

      【解决方案2】:
      import csv
      f = open("somefile.txt", "r")
      for line in f:
          l = line.split()
          f1= l[0]
          f2 = l[1]
          headers = l[2:]
          file2 = open(f2, "r")
          for h in headers:
              file2.write(','.join(headers) + '\n')
          with open(f1, "r") as filename:
              r = csv.DictReader(filename)
              for x in r:
                  out = []
                  for h in headers:
                      out.append(x[h])
                  file2.write(','.join(out) + '\n')
      

      【讨论】:

      • 为什么不使用 csvwriter 来确保正确格式化输出、分隔符、引用等?
      猜你喜欢
      • 1970-01-01
      • 2021-10-22
      • 2014-04-19
      • 2018-09-10
      • 1970-01-01
      • 2022-11-09
      • 2022-07-07
      • 1970-01-01
      • 2018-01-01
      相关资源
      最近更新 更多