Pythonで1つのテキストファイルから別のテキストファイルにループ経由で検索し、検索項目ごとに1つの結果のみを返します

バイオメイジ

問題:

各行に異なる種の名前を含むテキストファイルがあります。以下に例を含めます。ファイルパスと種名のリストを含む別の行があります(これも以下に含まれています)。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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ