2017-05-10 12 views
0
  • python 3.5 - 私はEntrez biopythonを使用して、pubmed biomedical websiteのデータベース= pmcからいくつかの情報を抽出しています。今、私は、XMLファイルからにしたい:XMLファイルからnamesタグに基づいて情報を抽出します。

    <DocSum> 
    <Id>5412469</Id> 
    <Item Name="PubDate" Type="Date">2017 Apr 22</Item> 
    <Item Name="EPubDate" Type="Date">2017 Apr 22</Item> 
    <Item Name="Source" Type="String">Int J Mol Sci</Item> 
    <Item Name="AuthorList" Type="List"> 
        <Item Name="Author" Type="String">Guo Y</Item> 
        <Item Name="Author" Type="String">Bao Y</Item> 
        <Item Name="Author" Type="String">Yang W</Item> 
    </Item> 
    <Item Name="Title" Type="String">Regulatory miRNAs in Colorectal Carcinogenesis and Metastasis</Item> 
    <Item Name="Volume" Type="String">18</Item> 
    <Item Name="Issue" Type="String">4</Item> 
    <Item Name="Pages" Type="String">890</Item> 
    <Item Name="ArticleIds" Type="List"> 
        <Item Name="pmid" Type="String">28441730</Item> 
        <Item Name="doi" Type="String">10.3390/ijms18040890</Item> 
        <Item Name="pmcid" Type="String">PMC5412469</Item> 
    </Item> 
    <Item Name="DOI" Type="String">10.3390/ijms18040890</Item> 
    <Item Name="FullJournalName" Type="String">International Journal of Molecular Sciences</Item> 
    <Item Name="SO" Type="String">2017 Apr 22;18(4):890</Item> 
    

エキス名{正確なライン以下} =タイトル:

<Item Name="Title" Type="String">Regulatory miRNAs in Colorectal Carcinogenesis and Metastasis</Item> 

しかし、どのように私はこの問題を解決することができますか? 私はこのコードを使用してきたが:

for tag in soup.findAll("docsum"): # I'm working with multiple articles in one file 
    for a_tag in tag.findAll("item"): 
     a_recs.append(a_tag.text) 

return a_recs 

をしかし、私はちょうどタイトルを望んでいる間、それは1、リスト内のすべての値を返します。例えば、以下のように:

['2017 Apr 22', '2017 Apr 22', 'Int J Mol Sci', '\nGuo Y\nBao Y\nYang W\n', 'Guo Y', 'Bao Y', 'Yang W', 'Regulatory miRNAs in Colorectal Carcinogenesis and Metastasis', '18', '4', '890', '\n28441730\n10.3390/ijms18040890\nPMC5412469\n', '28441730', '10.3390/ijms18040890', 'PMC5412469', '10.3390/ijms18040890', 'International Journal of Molecular Sciences', '2017 Apr 22;18(4):890'] 

答えて

0

試してみてください。

>>> data = ''' 
... <DocSum> 
... <Id>5412469</Id> 
... <Item Name="PubDate" Type="Date">2017 Apr 22</Item> 
... <Item Name="EPubDate" Type="Date">2017 Apr 22</Item> 
... <Item Name="Source" Type="String">Int J Mol Sci</Item> 
... <Item Name="AuthorList" Type="List"> 
...  <Item Name="Author" Type="String">Guo Y</Item> 
...  <Item Name="Author" Type="String">Bao Y</Item> 
...  <Item Name="Author" Type="String">Yang W</Item> 
... </Item> 
... <Item Name="Title" Type="String">Regulatory miRNAs in Colorectal Carcinogenesis and Metastasis</Item> 
... <Item Name="Volume" Type="String">18</Item> 
... <Item Name="Issue" Type="String">4</Item> 
... <Item Name="Pages" Type="String">890</Item> 
... <Item Name="ArticleIds" Type="List"> 
...  <Item Name="pmid" Type="String">28441730</Item> 
...  <Item Name="doi" Type="String">10.3390/ijms18040890</Item> 
...  <Item Name="pmcid" Type="String">PMC5412469</Item> 
... </Item> 
... <Item Name="DOI" Type="String">10.3390/ijms18040890</Item> 
... <Item Name="FullJournalName" Type="String">International Journal of Molecular Sciences</Item> 
... <Item Name="SO" Type="String">2017 Apr 22;18(4):890</Item>''' 
>>> 
>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup(data, 'xml') 

>>> for tag in soup.findAll("DocSum"): 
... for a_tag in tag.find("Item", {"Name" : "Title"}): 
...  a_recs.append(a_tag) 
... 
>>> a_recs 
['Regulatory miRNAs in Colorectal Carcinogenesis and Metastasis'] 
関連する問題