一條線我有一個這樣的文件:在一個循環從列表打印每個元素的每個循環
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']
非常凌亂,我希望通過首先分組方面整理一下。即拉出transcript_ids並將其寫爲transcript_id xyzt,xyzt2; 並最終重複所有條款。
我的這種做法是使用
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)
然後重新使用,以嘗試並匹配字符串和拉回來這個信息代替先刪除所有的雜亂字符。我可以做什麼,只是不知道如何寫入文件,以保持適當的路線。
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)
,但因爲所有的列表中爲每個系列有不同的長度不起作用。
目前一種解決方法,我將下降這一點。認爲我會更容易跟隨。這正是我正在尋找的,希望可以在我的代碼中早些時候清理整個問題,所以我不會列出清單內的清單(儘管有助於確保我最初做的是我所需要的) – George