-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse.py
37 lines (26 loc) · 964 Bytes
/
parse.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from xml.dom.minidom import parse, parseString
def get_step(note):
stepNode = note.getElementsByTagName("step")[0]
#get the text from the Text Node within the <step>,
#and convert it from unicode to ascii
return str(stepNode.childNodes[0].nodeValue)
def get_alter(note):
alters = note.getElementsByTagName("alter")
if len(alters) == 0:
return None
return alters[0]
def is_rest(note):
return len(note.getElementsByTagName("rest")) > 0
def is_accidental(note):
return get_alter(note) != None
dom = parse("searle_mydayofcarnage.xml")
notes = dom.getElementsByTagName("note")
print len(notes)
rests = filter(lambda note: is_rest(note), notes)
print len(rests)
notes = filter(lambda note: not is_rest(note), notes)
print len(notes)
accidentals = filter(lambda note: is_accidental(note), notes)
print len(accidentals)
non_accidentals = filter(lambda note: not is_accidental(note), notes)
print len(non_accidentals)