读取文件并输出包含主文件子集的新文件

时间:2015-01-27 16:18:03

标签: python text

我有一个包含数据行的文本文件。我想使用python创建新的较小的文本文件,每个文件包含此主文本文件的指定子集。每个新文件应以第3列中的字符串命名,文件应包含第3列中包含该字符串的所有行,但应排除第3列,因为该信息现在存储在文件名中。我的主要问题是如何将最后一列指定为用于文件名的字符串。

输入文本文件的示例:

chr8:200-300    Gene1
chr8:400-500    Gene1
chr4:50-60  Gene2
chr4:90-200 Gene2
chr8:30-400 Gene3
chr8:9618-9749  Gene4

所需输出文件的示例,名为Gene2.txt:

chr4:50-60
chr4:90-200

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式解决问题:

  1. 读取输入行并拆分列。
  2. 创建一个将名称映射到项目数组的词典。将每个输入行插入字典。
  3. 迭代字典。对于每个字典项,使用字典键作为文件名,将数组作为文件内容写入文件。
  4. 请参阅Python group by

答案 1 :(得分:1)

正如其他用户评论的那样,如果您使用字典,则可以迭代值。

with open("path/to/file.txt","r") as f:
    d = {}
    for line in f:
        content,gene  = line.strip().split()
        if d.has_key(gene):
            d[gene].append(content)
        else:
            d[gene] = []
            d[gene].append(content)

    for key,value in d.iteritems():
        f = open("path/to/destination/{}.txt".format(key), "w")
        for item in value:    
            f.write("{}\n".format(item))
        f.close()