我想從Pubmed下載一些XML - 沒有問題,Biopython是偉大的。問題是我不知道如何操作輸出。我想將大部分解析的xml放入sql數據庫中,但我對輸出不熟悉。對於某些事情,我可以像解析字典一樣調用解析的xml,但對其他人來說,它看起來並不那麼簡單。Biopython類實例 - 從Entrez.read輸出:我不知道如何操縱輸出
from Bio import Entrez
Entrez.email="[email protected]"
import sqlite3 as lite
handle=Entrez.efetch(db='pubmed',id='22737229', retmode='xml')
record = Entrez.read(handle)
如果我想找到的頭銜,我可以這樣做:
title=record[0]['MedlineCitation']['Article']['ArticleTitle']
但分析對象的類型是一個類:
>>> type(record)
<class 'Bio.Entrez.Parser.ListElement'>
>>>r=record[0]
>>>type(r)
<class 'Bio.Entrez.Parser.DictionaryElement'>
>>> r.keys()
[u'MedlineCitation', u'PubmedData']
這讓我覺得有一定比使用它作爲字典更容易做到這一點。但是,當我嘗試:
>>> r.MedlineCitation
Traceback (most recent call last):
File "<pyshell#67>", line 1, in <module>
r.MedlineCitation
AttributeError: 'DictionaryElement' object has no attribute 'MedlineCitation'
它不起作用。我明顯可以用它作爲字典,但後來我遇到了問題。
真正的問題是嘗試使用它像一本字典什麼時候能得到從記錄某些信息:
>>> record[0]['MedlineCitation']['PMID']
StringElement('22737229', attributes={u'Version': u'1'})
這意味着我不能只是撲通(這是一個技術術語;)到我的sql數據庫,但需要將其轉換:
>>> t=record[0]['MedlineCitation']['PMID']
>>> t
StringElement('22737229', attributes={u'Version': u'1'})
>>> int(t)
22737229
>>> str(t)
'22737229'
所有的一切我很高興爲信息的深度Entrez.read()提供,但我不知道如何方便地使用信息,在生成的類的實例。通常你可以做像
record.MedlineCitation
但它不起作用。
乾杯
惠頓
如何從您提供的示例中獲取屬性佔用情況? –