Python忽略具有多个模式匹配的行
我的清单如下:Python忽略具有多个模式匹配的行,python,list,string-matching,Python,List,String Matching,我的清单如下: Index1_list=['ATTACTCG','TCCGGAGA','CGCTCATT','GAGATTCC','ATTCAGAA'] 如果行中只有一个列表元素在中(不是两个不同的或三个不同的) 输出应该是 >seq2 NNNNNNNNNNNNNATTACTCGNNNNNNNNNN >seq3 NNNNNNNNNNNNNGAGATTCCNNNNNNNNNNN 我使用了下面的脚本,但无法筛选出具有两个不同匹配项的读取 from Bio import SeqIO
Index1_list=['ATTACTCG','TCCGGAGA','CGCTCATT','GAGATTCC','ATTCAGAA']
如果行中只有一个列表元素在中(不是两个不同的或三个不同的)
输出应该是
>seq2
NNNNNNNNNNNNNATTACTCGNNNNNNNNNN
>seq3
NNNNNNNNNNNNNGAGATTCCNNNNNNNNNNN
我使用了下面的脚本,但无法筛选出具有两个不同匹配项的读取
from Bio import SeqIO
Index1_list=['ATTACTCG','TCCGGAGA','CGCTCATT','GAGATTCC','ATTCAGAA']
with open('All.fastq','r') as R1:
for record in SeqIO.parse(R1,'fasta'):
for i in Index1_list:
if i in record.seq:
sequences = record.format('fasta')
print(sequences)
谢谢。您应该能够通过检查列表中有多少元素位于所需字符串中来完成所需操作,如下所示:
来自Bio导入序列
Index1_list=['attachtcg'、'TCCGGAGA'、'CGCTCATT'、'GAGATTCC'、'ATTCAGAA']
以open('All.fastq','r')作为R1:
对于SeqIO.parse(R1,'fasta')中的记录:
计数=0
对于Index1_列表中的i:
如果我在record.seq中:
计数+=1
如果计数=1:
sequences=record.format('fasta')
打印(序列)
谢谢您的帮助。我有一个关于计数器的问题-如果我错了,请纠正我,因此计数器实际上是针对记录的。seq
如果它已在第二个for循环中两次(如果条件适用)
,则表示该记录中有两个索引。是的。第二个for循环通过Index1\u list
。对于列表中的每个元素,我们测试该元素是否存在于record.seq
中。如果是这种情况,我们增加计数器。因此,计数器统计记录.seq
中存在的索引列表
中的不同元素的数量。因此,我们只想在计数器等于1
时打印它。请注意,我们只测试列表中的元素在记录.seq中是否至少存在一次,我们不知道它存在多少次。因此,“nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnatctcgnnnn”
也将被打印出来。这是一个完美而详细的答案,非常感谢您的帮助:)
from Bio import SeqIO
Index1_list=['ATTACTCG','TCCGGAGA','CGCTCATT','GAGATTCC','ATTCAGAA']
with open('All.fastq','r') as R1:
for record in SeqIO.parse(R1,'fasta'):
for i in Index1_list:
if i in record.seq:
sequences = record.format('fasta')
print(sequences)