Python 读取文件并输出包含主文件子集的新文件
我有一个包含数据行的文本文件。我想使用python创建新的较小的文本文件,每个文件都包含此主文本文件的指定子集。每个新文件应以第3列中的字符串命名,并且该文件应包含第3列中包含该字符串但应排除第3列本身的所有行,因为该信息现在存储在文件名中。我的主要问题是如何将最后一列指定为用于文件名的字符串 输入文本文件的示例:Python 读取文件并输出包含主文件子集的新文件,python,text,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
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
您可以通过以下方式解决此问题:
请参见其他用户评论的,如果您使用字典,则可以对值进行迭代
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()
堆栈溢出用户需要做一些研究工作。如目前所述,它很可能被关闭为“过于宽泛”(即使它没有那么宽泛)。修改你的问题,展示一些研究成果,并将其标记为重新打开。一个开始的提示,正则表达式很适合切分:
re.match(r)([^:]+):([^\s]+)\s+(.*),“chr8:200-300 Gene1”).groups()
为你提供了('chr8',200-300',Gene1')
使第三个项目可以轻松地用于文件名。效果很好,谢谢!没问题。很高兴我能提供帮助。如果数据中有4列,我将如何修改它,以便输出前3列,最后一列是用于文件名的基因名称?您有新数据的外观示例吗?实际上,我用以下方法解决了一半:“fields=line.strip().split(“\t”)content=fields[0:3]gene=fields[3]但是,文件的内容在三列数据周围仍然具有所有格式,如“[”]”。所以问题是如何在没有这种python格式的情况下打印数据