这是提取患者数据和任何匹配的Gleason数据的示例。
from pyparsing import *num = Word(nums)accessionDate = Combine(num + "/" + num + "/" + num)("accDate")accessionNumber = Combine("S" + num + "-" + num)("accNum")patMedicalRecordNum = Combine(num + "/" + num + "-" + num + "-" + num)("patientNum")gleason = Group("GLEASON" + Optional("SCORE:") + num("left") + "+" + num("right") + "=" + num("total"))assert 'GLEASON 5+4=9' == gleasonassert 'GLEASON SCORE: 3 + 3 = 6' == gleasonpatientData = Group(accessionDate + accessionNumber + patMedicalRecordNum)assert '01/02/11 S11-4444 20/111-22-3333' == patientDatapartMatch = patientData("patientData") | gleason("gleason")lastPatientData = Nonefor match in partMatch.searchString(data): if match.patientdata: lastPatientData = match elif match.gleason: if lastPatientData is None: print "bad!" continue print "{0.accDate}: {0.accNum} {0.patientNum} Gleason({1.left}+{1.right}={1.total})".format( lastPatientData.patientData, match.gleason )印刷品:
01/01/11: S11-55555 20/444-55-6666 Gleason(5+4=9)01/02/11: S11-4444 20/111-22-3333 Gleason(3+3=6)



