2017-03-28 12 views
0

これはかなり長い質問です。私の問題は非常に具体的で、何か説明が必要なので残念です。Python - ElementTreeを使ったXMLファイルのデータ解析

I複数の 'spreekbeurten'を含むXMLファイルがあります。私はspreekbeurtenからすべてのテキストを取得したい、問題は、いくつかのspreekbeurtenは 'アルグループ'といくつかのことを持っていないということです。 (xmlファイルofthe例ピースのために以下のコードを参照してください)

<handelingen> 
     <spreekbeurt nieuw="ja"> 
     <spreker> 
      <voorvoegsels>De heer</voorvoegsels> 
      <naam> 
      <achternaam>Recourt</achternaam> 
      </naam> (<politiek>PvdA</politiek>):</spreker> 
     <tekst status="goed"> 
      <al-groep> 
       <al>Much</al> 
       <al>Very</al> 
       <al>Hungry</al> 
       <al>I am</al> 
       <al>Hello.</al> 
       </al-groep> 
      </tekst> 
      </spreekbeurt> 

     <spreekbeurt nieuw="nee"> 
     <spreker> 
      <voorvoegsels>De heer</voorvoegsels> 
      <naam> 
      <achternaam>Van Raak</achternaam> 
      </naam> (<politiek>SP</politiek>):</spreker> 
     <tekst status="goed"> 
      <al>Just one word</al> 
     </tekst> 
     </spreekbeurt> 

    </handelingen> 

私は、話者の対応するテキストとspreker彼の「voorvoegsel」と「achternaaam」を取得したいです。これを行うために、私は次のコードを書いた:

def extractingText(filepath): 
    #Checking the size to keep empty files (size = 0 bytes) out! 
    statsinfo = os.stat(filepath)  
    if int(statsinfo.st_size) == 0: 
     return None 

    tree = ET.parse(filepath) 
    root = tree.getroot() 
    #Hiermee kijken we naar handelingen (het gedeelte waar de gesproken stukken in staan) 
    for handelingen in root.iter('handelingen'): 
     spreekbeurt = [] 
     #Hiermee kijken we naar alle spreekbeuten van de personen 
     for spreekbeurt in handelingen.iter('spreekbeurt'): 
      achternaam = spreekbeurt.find('spreker/naam/achternaam').text 
      voorvoegsel = spreekbeurt.find('spreker/voorvoegsels').text 
      #Defining what the text is, sometimes it is withn an al-group and sometimes it isn't 
      text = spreekbeurt.find('tekst/al-groep/al') #<- TO FIX I SUPPOSE I NEED TO ADD A FOR LOOP HERE? 
      if text == None: 
       text = spreekbeurt.find('tekst/al') 
      #Zoals je ziet heb ik nu voor alle spreekbeurten een text gevonden 
      print text.text 

    return None 

問題は「spreekbeurt」「はアル・グループ」を含んでいる場合、私は唯一の「多く」の例にある最初の「アル」を得るということですがありませんすべての他の言葉。 'spreekbeurt'に 'a'が含まれていれば、最初の文だけでなく、 'al'文のすべてのテキストを選択することができますか?

ありがとうございます!

答えて

0

あなたの答えはxml.etree.ElementTree.Element.findallだと思います。 次に、結果をリストに入れ、リストが要素なしであるかどうかを確認します。

関連する問題