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

Read a file and output new files containing subsets of main file

我有一个包含多行数据的文本文件。我想使用 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

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

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

Python group by

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

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()