1

テキスト ドキュメントからトークンを読み取り、特定のキーワードをチェックしたいと考えています。どうすればいいですか?たとえば、私のファイルは次のようになります。

<protein id="Q11" name="HUMAN" length="655" crc64="30E1C1D138">
    <match id="G3DSA:3.30.160.60" name="ZC2f_H2/iegse_NA-bd" dbname="GE3D" status="T" evd="HMPfm">
      <ipr id="IPR013087" name="Zinc finger, H2-type/inrase, D-bindg" tpe="Dain" />
      <ln stt="114" end="142" sc="1.0E-8" />
    </match>

(最初の行をスキップして、dbname の 2 行目のトークンを検索したい場合は、GE3D と同じでなければなりません。そうであれば、stt 番号と終了番号を保存したいと思います。)

*だから私はこれをしましたが、複数の数字が要件を満たす必要があるため、開始と終了に1つの数字しか返されない理由がわかりません: from lxml import entree

ファイル名 = 'inQ14591.txt'

open(filename,'rb') を f:

root = etree.parse(f)
for ln in root.xpath("/protein/match[@dbname='GE3D']/ln"):
    start = ln.get("stt")
    end = ln.get("end")

印刷 (stt)

印刷終了

4

2 に答える 2

1

これは XML によく似ており、それをうまく利用することができます。

from lxml import etree

filename = "somefilename" # change this

with open(filename, 'rb') as f:
    root = etree.parse(f)
    for ln in root.xpath("/protein/match[@dbname='GE3D']/ln"):
        stt = ln.get("stt")
        end = ln.get("end")
        print "%s, %s" % (stt, end, )
        # do something else with stt and end
于 2012-07-06T15:59:06.127 に答える
0

で解析できるようですがBeautifulSoup、何を探しているのか正確にはわかりません

from BeautifulSoup import BeautifulSoup
text = '''<protein id="Q11" name="HUMAN" length="655" crc64="30E1C1D138">
    <match id="G3DSA:3.30.160.60" name="ZC2f_H2/iegse_NA-bd" dbname="GE3D" status="T" evd="HMPfm">
      <ipr id="IPR013087" name="Zinc finger, H2-type/inrase, D-bindg" tpe="Dain" />
      <ln stt="114" end="142" sc="1.0E-8" />
    </match>'''

soup= BeautifulSoup(text)

res=soup.findAll(dbname='GE3D')

コメントごとに更新してstt値を見つけます。次の行を見つけて、次のようlnにタグを取得する必要があります。stt

stt_value = soup.findAll('ln')[0]['stt'] # u'114'
end_value = soup.findAll('ln')[0]['end'] # u'142'
于 2012-07-06T15:54:16.513 に答える