不熟lan 发表于 2021-8-19 11:49:32

python代码

求助大佬们,现我有个fasta文件,里面是同一ID对应不同的序列,我需要根据里面的相同ID提取出不同序列并自动生成以此ID命名的文件里,怎样用python实现啊?刚开始学python,无从下手~~
>FA-Oe9L01-01
TCGTTTTGGTATTTTCTCTTTTGTCTTTTA
>FA-Oe9L01-01
TCGTTTTGGTATTTTCTCTTTTGTCTTTAA
>FA-Oe9L01-01
TCGTTTTGGTATTTTCTCTTTTGTCTTTTA
>FA-Oe9L01-03
GATGTGCACATAGAGATGTCTTACTGCACC
>FA-Oe9L01-03
GATGTGCACATAGAGATGTCTTACTGCAGC
>FA-Oe9L01-03
GATGTGCACATAGAGATGTCTTACTGCACC
>FA-Oe9L01-03
GATGTGCACATAGAGATGTCTTACTGCACA

3236654291 发表于 2021-8-19 14:19:44

我试试吧

不熟lan 发表于 2021-8-19 14:34:21

3236654291 发表于 2021-8-19 14:19
我试试吧

啊~~非常感谢

3236654291 发表于 2021-8-19 15:23:55

你好啊

3236654291 发表于 2021-8-19 15:24:50

>FA-Oe9L01-01
你是想要把这个当成文件名吗

3236654291 发表于 2021-8-19 16:05:44

文本文档不可以用>命名

不熟lan 发表于 2021-8-19 16:09:01

这个> 不需要,就要后面那个就行

不熟lan 发表于 2021-8-19 16:09:35

那个只是原始文件的的格式

3236654291 发表于 2021-8-19 16:14:41

3236654291 发表于 2021-8-19 16:17:15

import re

with open('2021.8.19.txt','r') as f:
    content = f.read()

content = content.split('\n')[:-1]

a = []
b = []

for i in range(len(content)):
    if '>' in content:
      a.append(content)
    else:
      b.append(content)

    print(content)


lst = []
for el in a:
    if lst.count(el) < 1:
      lst.append(el)

num = []
for i in range(len(lst)):
    num.append(a.count(lst))


c = []
c.append(b[:num])
c.append(b:])

for i in range(len(lst)):
    for each in range(len(c)):
      with open(lst + '.txt', 'a') as f:
            f.write(c + '\n')

实在是头晕,结果不对,但应该可以给你个参考
我有空再看看

3236654291 发表于 2021-8-19 16:17:50

这个代码行不通,我之后再改善,现在只能给你参考

不熟lan 发表于 2021-8-19 16:18:49

好的,已经非常感谢了~~
页: [1]
查看完整版本: python代码