python&pyparsing newb:如何打开fi

2024-09-30 14:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

paulmcguire,pyparsing的作者,是kind enough to help a lot with a problem I'm trying to solve。我们已经落后1码了,但我甚至不能把球踢过球门线。孔子说,如果他给了一个学生1/4的答案,而他没有带着另外3/4的答案回来,那么他就不会再教这个学生了。所以,在经历了将近一周的挫折之后,我怀着极大的焦虑问这个问题。。。在

如何打开用于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()

Tags: 文件to答案ifmatchpyparsing学生num
2条回答

看来你需要帮忙把它组装起来。@BrenBarn的建议很贴切,在你把它们放在一起之前先处理简单复杂的问题。我给你举一个简单的例子来帮你。您可以将其用作learn how to read/write a file in python的模板。考虑输入文本文件data.txt

cat 3
dog 5
foo 7

让我们解析这个文件并输出结果。为了好玩,让我们把第二列乘以2:

^{pr2}$

这给出了data2.txt

cat 6
dog 10
foo 14

把每一部分都分解,直到你明白为止。从这里开始,您可以慢慢地将这个最小的示例应用于上面更复杂的问题。从Paul himself notes开始读入文件(只要文件相对较小):

parseFile is really just a simple shortcut around parseString, pretty much the equivalent of expr.parseString(open(filename).read()).

看起来您需要调用datafile.read()才能读取文件的内容。现在您正在尝试对file对象本身调用searchString,而不是文件中的文本。您应该看看Python教程(尤其是this section)来了解如何读取文件等

相关问题 更多 >