Pyparsing发现文件中首次出现

时间:2014-04-25 12:06:32

标签: python pyparsing

我通过

解析文件
output=wilcard.parseFile(myfile)
print output

我只得到第一场比赛。

我有一个很大的配置文件要解析,用"条目"被牙套包围。 我希望看到所有匹配的文件或例外匹配。

我如何实现这一目标?

1 个答案:

答案 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