周六晚上复习了一遍python的语法,深入学习了一下正则表达式。
周日上午写了3h,晚上3h,周一晚上3.5h,最后终于做得七七八八了
一开始看题不太仔细,导致浪费了一些时间,下次注意!!
本次任务中主要学会了一下知识点:
1、用split空白符读文件
2、建立一个key对应不同value的字典
3、通过新建一个list对原有list去重
4、对re的使用和了解有了一个较大的提升,本来我是用re来获取需要的列信息的,但是re表达式比较复杂,能不用还是不要用!
all_data=[]
data=[]
with open('example.elm','r') as f:
all_data=f.readlines()
for i in range(len(all_data)):
data1=[]
for element in all_data[i].split():
data1.append(str(element))
data.append(data1)
print(data)
acc=[]
position=[]
sequence=[]
for i in data:
acc.append(i[0])
position.append(i[2])
sequence.append(i[1])
#acc去重
acc1=[]
for i in acc:
if i not in acc1:
acc1.append(i)
from collections import defaultdict #key为ID,value为所有磷酸化位点
d = defaultdict(list)
for key, value in zip(acc, position):
d[key].append(value)
position1=[] #value放进position1列表
for key in d:
position1.append(d.get(key))
from collections import defaultdict #key为ID,value为序列
d2 = defaultdict(list)
for key, value in zip(acc, sequence):
d2[key].append(value)
sequence1=[] #序列放进sequence1列表
for key in d2:
sequence1.append(d2.get(key))
with open('fasta-r.txt','w+') as g:
for i in range(len(acc1)):
g.write('>'+acc1[i]+'@')
for k in range(len(position1[i])):
a=position1[i]
g.write(a[k] +';' )
b=sequence1[i]
g.write('\n'+b[0]+'\n')
网友评论