Проблема:
У меня есть текстовый файл, который содержит разные названия видов в каждой строке, я приведу пример ниже, у меня есть другая строка, в которой есть список путей к файлам и названия видов (также включены ниже). Я хотел бы найти каждый пример вида в первом списке, присутствующий во втором списке (с возвращенным путем к файлу), но только один для каждого вида, возвращаемого для каждого вида. В данный момент мой код находит первый вид в списке, возвращает каждый его экземпляр и затем останавливается.
Пример ввода:
Вот подмножество текстового файла названия вида:
Ferroglobus placidus
Halorubrum arcis
Sulfolobus acidocaldarius
Вот подмножество файла каталога и названия вида:
file,Species
./refseq/archaea/GCF_001560525.1/GCF_001560525.1_NG05B_C06_12_genomic,Sulfolobus acidocaldarius
./refseq/archaea/GCF_001560525.1/GCF_001560525.1_NG05B_C06_12_genomic,Sulfolobus acidocaldarius
./refseq/archaea/GCF_001560525.1/GCF_001560525.1_NG05B_C06_12_genomic,Sulfolobus acidocaldarius
./refseq/archaea/GCF_001560525.1/GCF_001560525.1_NG05B_C06_12_genomic,Sulfolobus acidocaldarius
./refseq/archaea/GCF_000337015.1/GCF_000337015.1_ASM33701v1_genomic,Halorubrum arcis
./refseq/archaea/GCF_000337015.1/GCF_000337015.1_ASM33701v1_genomic,Halorubrum arcis
./refseq/archaea/GCF_000337015.1/GCF_000337015.1_ASM33701v1_genomic,Halorubrum arcis
./refseq/archaea/GCF_000337015.1/GCF_000337015.1_ASM33701v1_genomic,Halorubrum arcis
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus
Текущий код:
В настоящий момент код повторяется один раз для первого имени в списке видов, а затем останавливается.
import re
import sys
list = open('speciesnames.txt', "r")
file = open('pathandspeciesname.csv', "r")
for x in list:
for line in file:
if re.findall(x, line):
print (line)
Токовый выход:
Вот пример вывода, который я получаю из кода выше, каждый экземпляр Ferroglobus placidus возвращается, но цикл останавливается после этого.
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus
Желаемый выход:
Мой желаемый результат - иметь путь для каждого вида, но только один для каждого вида, как показано ниже:
./refseq/archaea/GCF_001560525.1/GCF_001560525.1_NG05B_C06_12_genomic,Sulfolobus acidocaldarius
./refseq/archaea/GCF_000337015.1/GCF_000337015.1_ASM33701v1_genomic,Halorubrum arcis
./refseq/archaea/GCF_000025505.1/GCF_000025505.1_ASM2550v1_genomic,Ferroglobus placidus