检查txt文件(不工作)Python的字符串中是否存在列表中的元素

检查txt文件(不工作)Python的字符串中是否存在列表中的元素,python,list,for-loop,Python,List,For Loop,我尝试了很多方法,但根本没有得到任何结果。我有一个包含不同类型字符串的列表: lst=['ATCGG','GTAACGCT','AATCGAT',...] 我有一个文本文件,如下所示: >seq1 NNNGTAACGCTNNN >seq2 NNNNNAATCGATNNNN >seq3 NNNNNNNN . . . 如果行中存在列表中的任何项,我想打印文本文件的行。根据上述示例,所需输出应为: NNNGTAACGCTNNN NNNNNAATCGATNNNN 我使用了下面的命

我尝试了很多方法,但根本没有得到任何结果。我有一个包含不同类型字符串的列表:

lst=['ATCGG','GTAACGCT','AATCGAT',...]
我有一个文本文件,如下所示:

>seq1
NNNGTAACGCTNNN
>seq2
NNNNNAATCGATNNNN
>seq3
NNNNNNNN
.
.
.
如果行中存在列表中的任何项,我想打印文本文件的行。根据上述示例,所需输出应为:

NNNGTAACGCTNNN
NNNNNAATCGATNNNN
我使用了下面的命令,但没有打印任何内容:

main_file =  open('test_file.txt', 'r')
contn = main_file.read()
#print(contn)


for dna in contn:
    if any(i in dna for i in lst):
        print(dna)

直观的显式循环版本:

def find_line_包含任何内容(文件名、通缉名单):
打开(文件名为“r”)作为dna_文件:
对于dna_文件中的dna_行:
对于通缉名单中的通缉犯:
如果需要dna:
产生dna
对于find_行中的dna(“test_file.txt”,lst):
印刷品(dna)

您需要
readlines
而不是
read
,read将创建一个字符串,因此当您迭代时,
dna
实际上只是单个字符

contn = main_file.read()
应该是

contn = main_file.readlines()

使用contn中的
for dna
,当
read()
返回一个
str
对象时,您可以对字符进行迭代,只需执行以下操作:

main_file =  open('test_file.txt', 'r')
for line in main_file:
    if any(i in line for i in lst):
        print(line)

非常确定您需要的是
readlines
而不是
read
,因为您当前将逐个字符进行检查-这就解决了问题