如何解决检查列表中的元素是否存在于 txt 文件的字符串中不工作Python
我尝试了很多方法,但根本没有得到任何输出。我有一个包含不同类型字符串的列表:
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)
解决方法
您需要 readlines
而不是 read
,read 将创建单个字符串,因此当您迭代时,dna
实际上只是单个字符
contn = main_file.read()
应该
contn = main_file.readlines()
,
直观的显式循环版本:
def find_lines_containing_any(filename,wanted_list):
with open(filename,'r') as dna_file:
for dna_line in dna_file:
for wanted in wanted_list:
if wanted in dna:
yield dna
for dna in find_lines('test_file.txt',lst):
print(dna)
,
使用 for dna in contn
,当 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。