pyparsing の作成者である Paul McGuire は、私が解決しようとしている問題について親切に助けてくれました。ゴールまであと 1 ヤードの 1 ダウンですが、ゴール ラインをパントすることさえできません。孔子は、生徒に解の 4 分の 1 を与え、残りの 4 分の 3 を返さなければ、その生徒には二度と教えないと言いました。それで、私がこれを尋ねるのは、ほぼ1週間の欲求不満と大きな不安の後でです...
pyparsing のために入力ファイルを開き、出力を別のファイルに出力するにはどうすればよいですか?
これは私がこれまでに得たものですが、実際にはすべて彼の仕事です
from pyparsing import *
datafile = open( 'test.txt' )
# Backaus Nuer Form
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"))
patientData = Group(accessionDate + accessionNumber + patMedicalRecordNum)
partMatch = patientData("patientData") | gleason("gleason")
lastPatientData = None
# PARSE ACTIONS
def patientRecord( datafile ):
for match in partMatch.searchString(datafile):
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
)
patientData.setParseAction(lastPatientData)
# MAIN PROGRAM
if __name__=="__main__":
patientRecord()