如何使用python在制表符分隔文件中逐行合并字段

时间:2016-07-21 10:06:48

标签: python merge tab-delimited

这是我的制表符分隔文件的两个示例行:

id  reference_rc_001    alternative_rc_001  reference_rc_002    alternative_rc_002  reference_rc_003    alternative_rc_003
id1 0   433 0   0   69

我想每两列合并一次字段。示例输出应该是这样的。这是python脚本的一个步骤。所以必须用python

完成
id  reference_rc_001alternative_rc_001  reference_rc_002alternative_rc_002  reference_rc_003alternative_rc_003
id1 0433    00  690

1 个答案:

答案 0 :(得分:0)

这看起来非常可怕,可能是最糟糕的方式,可能和驴子一样高效,但..... 我认为它有效。

您需要打开文件,最好使用with,这样您就可以遍历文件中的各行。 (许多其他的SO文章将通过一个不错的解释来解决这个问题,所以我不会这样做。)

然后在演示for循环中使用一些代码:

for line in file:
    items = line.split("\t")
    counters = range(len(items)/2)
    new_items = [items[0]] + [items[1+2*x] + items[2+2*x] for x in counters ]
    new_line = '\t'.join(new_items)
    print new_line

解释:

我将每一行拆分为一个列表(使用制表符作为分隔符)。 然后我通过索引列表中的n和n + 1个元素并将它们一起添加(作为字符串)来创建新列表。 最后,要使用制表符分隔的条目重新创建一行文本,我将join新的列表与制表符分隔符一起#!/usr/bin/env bash headers='-H "custom1: ololo1" -H "custom2: ololo2"' value_for_header="value" curl -X "PUT" -H "Content-Type: application/json" -H "custom_ololo: $value_for_header" $headers http://localhost:8000/ -d '{"a": true}' -vv

希望能为您提供解决方案所需的部分。