【问题标题】:Extract data from tsv file python从tsv文件python中提取数据
【发布时间】:2014-10-20 09:35:01
【问题描述】:

我有一个 TSV 文件,如下所示:

A   B   C   D   D=1;E=2
S   D   F   G   H=2;B=4

我想以这种方式将内容写入另一个 tsv 文件。

A   B   C   D   D   1
A   B   C   D   E   2
S   D   F   G   H   2
S   D   F   G   B   4

如果有人可以根据需要帮助/提示我拆分第 5 列,我将不胜感激。

【问题讨论】:

    标签: python file extract tsv csv


    【解决方案1】:
    with open('path/to/input') as infile, open('path/to/output', 'w') as outfile:
        writer = csv.writer(outfile, delimiter='\t')
        for line in csv.reader(infile, delimiter='\t'):
            vals = line[-1]
            headers = line[:-1]
            for val in vals.split(';'):
                writer.writeline(headers + [val])
    

    【讨论】:

      【解决方案2】:

      如果您确定只有制表符和分号,那么您可以使用 split。

      with open('/tmp/test.tsv') as infile, open('/tmp/test2.tsv', 'w') as outfile:
          for line in infile:
              tsplit = line.split("\t")
              firstcolumns = tsplit[:-1]
              lastitems = tsplit[-1].strip().split(";")
              for item in lastitems:
                  allcolumns = firstcolumns + item.split("=")
                  outfile.write("\t".join(allcolumns) + "\n")
      

      (已更新以使其更容易与其他答案进行比较。)

      无论您在最后一列中有多少分号分隔的项目,这都会起作用。但是,这对格式的微小变化(例如添加的空格)很敏感。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-26
        • 1970-01-01
        • 1970-01-01
        • 2022-06-11
        • 1970-01-01
        • 2018-07-18
        • 1970-01-01
        相关资源
        最近更新 更多