问题:
我有一个文本文件,每行包含不同的物种名称,我将在下面提供一个示例,我有另一行包含文件路径和物种名称的列表(也包括在下面)。我想在第二个列表中找到第一个列表中的每个物种的示例(返回文件路径),但是每个物种只返回一个。此时,我的代码找到列表中的第一个物种,并返回该物种的每个实例,然后停止
输入示例:
以下是物种名称文本文件的子集:
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
使用
break
函数意味着每个if语句循环只工作一次,使用readlines
函数意味着使用的是列表而不是文件句柄相关问题 更多 >
编程相关推荐