2017-03-28 2 views
0

내 문제가 매우 구체적이어서 설명이 필요하므로 매우 긴 질문이 될 것입니다.Python - ElementTree를 사용하는 XML 파일의 데이터 분석

I 여러 'spreekbeurten'이 포함 된 XML 파일이 있습니다. 나는 spreekbeurten에서 모든 텍스트를 얻고 싶다. 문제는 spreekbeurten이 'al-group'을 가지고 있지 않으며, 어떤 것이 그렇다는 것이다. (XML 파일 적힌 예를 조각 아래 코드를 참조하십시오)

<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'는 '알 - 그룹'이 포함 된 경우 I는 '대부분'의 예에서 첫 번째 '알'을 얻을 수 있다는 것입니다을하지 다른 모든 단어들. 어떻게 'spreekbeurt'에 'al'문장의 모든 텍스트를 골라야하고 첫 번째 문장 만 골라야하는지 어떻게 확인할 수 있습니까?

미리 감사드립니다.

답변