我有这样一个文件:
1:200-320 ['gene_id "xyz";transcript_id "xyzt"; exon_number "1"\n', 'gene_id "xyz";transcript_id "xyzt2"; exon_number "2"\n']
1:3000-3200 ['gene_id "xyz";transcript_id "xy"; exon_number "2"\n']
太乱了,我想先整理一下。i、 e.取出成绩单id,将其写为成绩单id xyzt,xyzt2; 最后重复所有的术语。你知道吗
我的方法是首先使用replace删除所有凌乱的字符
out=open('foo.txt','w')
with open('in.txt', 'r') as f:
for line in f:
tidyline = line.replace('[', "").strip()
tidyline = tidyline.replace(']', "").strip()
tidyline = tidyline.replace('"', "").strip()
tidyline = tidyline.replace("'", "").strip()
tidyline = tidyline.replace(",", "").strip()
out.write("%s\n" %tidyline)
然后使用re尝试匹配字符串并收回此信息。我可以这样做,只是不知道如何写一个文件,使他们在适当的行。你知道吗
import re
with open('foo.txt', 'r') as f:
for line in f:
result = re.findall('transcript_id\s(\w+)',line)
print result
['xyzt', 'xyzt2']
['xy']
我的想法是:
string= "transcript_id %s,%s" %(results[0], results[1])
file.write("%s\n" %string)
但是因为每一行的列表长度都不一样,所以这是行不通的。你知道吗
您可以将所有结果放在一个列表中,然后浏览:
最后一个问题(写可变长度的列表)可以用string的join方法解决。试试这个:
要保存文件操作,应将out文件的打开位置移到with语句,以避免保留未关闭的文件:
你真的需要写
foo.txt
的中间步骤,还是这只是一个工作循环?你知道吗我希望这有帮助。你知道吗
相关问题 更多 >
编程相关推荐