读取文件并输出包含主文件子集的新文件
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
您可以通过以下方式解决问题:
- 读取输入行并拆分列。
- 创建一个将名称映射到项目数组的字典。将每个输入行插入字典。
- 迭代字典。对于每个字典项,使用字典键作为文件名和数组作为文件内容编写一个文件。
见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()
我有一个包含多行数据的文本文件。我想使用 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
您可以通过以下方式解决问题:
- 读取输入行并拆分列。
- 创建一个将名称映射到项目数组的字典。将每个输入行插入字典。
- 迭代字典。对于每个字典项,使用字典键作为文件名和数组作为文件内容编写一个文件。
见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()