我通过
解析文件output=wilcard.parseFile(myfile)
print output
我只得到第一场比赛。
我有一个很大的配置文件要解析,用"条目"被牙套包围。 我希望看到所有匹配的文件或例外匹配。
我如何实现这一目标?
答案 0 :(得分:2)
默认情况下,pyparsing将从第一个字符开始找到最长匹配。因此,如果您的解析由num = Word('0123456789')
提供,则解析"462"
或"462-780"
将返回相同的值。但是,如果传递parseAll=True
选项,则解析将尝试解析整个字符串。在这种情况下,"462"
将匹配,但解析"462-780"
会引发ParseException,因为解析器不知道如何处理破折号。
我建议构建一些与整个文件匹配的内容,然后使用parseAll=True
中的parseFile()
标记。如果我理解您对每个条目的描述正确地用大括号分隔,那么可以执行以下操作。
entire_file = OneOrMore('[' + wildcard + ']')
output = wildcard.parseFile(myfile,parseAll=True)
print output