2021-12-13 任务一

周六晚上复习了一遍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')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容