Python - Data analysis of XML file with ElementTree -
this going pretty long question since problem quite specific , needs explaning sorry that.
i have xml file contains multiple 'spreekbeurten'. want obtain text spreekbeurten, problem spreekbeurten not have 'al-group' , do. (see code below example piece ofthe xml file)
<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 1 word</al> </tekst> </spreekbeurt> </handelingen>
i want obtain spreker 'voorvoegsel' , 'achternaaam' corresponding text of speaker. wrote following code:
def extractingtext(filepath): #checking size 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 naar handelingen (het gedeelte waar de gesproken stukken in staan) handelingen in root.iter('handelingen'): spreekbeurt = [] #hiermee kijken naar alle spreekbeuten van de personen spreekbeurt in handelingen.iter('spreekbeurt'): achternaam = spreekbeurt.find('spreker/naam/achternaam').text voorvoegsel = spreekbeurt.find('spreker/voorvoegsels').text #defining text is, withn al-group , isn't text = spreekbeurt.find('tekst/al-groep/al') #<- fix suppose need add 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
the problem if 'spreekbeurt' contains 'al-group' first 'al' in example 'much' , not other words. how make sure if 'spreekbeurt' contains pick text in 'al' statements , not first one?
thanks in advance!
i believe answer in xml.etree.elementtree.element.findall . put result in list , check if list no elements.
Comments
Post a Comment