問題:
各行に異なる種の名前を含むテキストファイルがあります。以下に例を含めます。ファイルパスと種名のリストを含む別の行があります(これも以下に含まれています)。2番目のリストにある最初のリスト(ファイルパスが返される)で種の各例を見つけたいのですが、種ごとに1つだけが種ごとに返されます。現時点では、私のコードはリストの最初の種を見つけ、その各インスタンスを返し、停止します。
入力例:
種名テキストファイルのサブセットは次のとおりです。
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
現在のコード:現時点でのコードは、種リストの名を1回ループしてから、停止します。
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)
電流出力:
上記のコードから取得した出力の例を次に示します。Ferroglobusplacidusの各インスタンスが返されますが、その後ループは停止します。
./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
望ましい出力:私の望ましい出力は、各種のパスを持つことですが、以下のように、種ごとに1つだけです。
./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
import re
listofspecies = open("allspeciesfull.txt").readlines()
listoffiles = open("fileid4.csv").readlines()
for x in listofspecies:
for line in listoffiles:
if re.findall(x, line):
print (line)
break
break
関数を使用すると、ループはifステートメントごとに1回だけreadlines
機能します。関数を使用すると、ファイルハンドルではなくリストが使用されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加