首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyParse - if no match返回特定语句

PyParse - if no match返回特定语句
EN

Stack Overflow用户
提问于 2020-06-28 01:20:56
回答 1查看 25关注 0票数 1

如果在以下代码中未找到匹配项(无VTP域或VTP模式),如何返回特定语句(例如,域:禁用):

代码语言:javascript
复制
testData = """

vtp domain XXxxXX
vtp mode transparent
udld enable
snmp-server enable traps vtp
"""
print("----------------------")
# simple grammar to match #vtp
ident = Word(alphas, alphanums+"_")
macroDef = Literal("vtp") + ident.setResultsName("name") + restOfLine.setResultsName("value")
for lit,ResN,RoLResN in macroDef.scanString( testData ):
    print('{0:5}{1:7}{2:1}{3:15}{4:}'.format("-",lit.name,":", lit.value,"[ENABLED]")) 
print("******************************************************************************")
EN

回答 1

Stack Overflow用户

发布于 2020-06-30 01:30:04

由于您使用的是scanString,因此对于检测到哪些值丢失,您可以进行更多的控制而不是pyparsing。因为您的pyparsing表达式一次只查找一个设置,所以它实际上只知道正在解析的当前行。要使用此方法检测缺失值,您需要保留自己的已找到元素的列表,然后在最后,对预期但未找到的元素执行操作(填充默认值,或提示用户输入值,或引发异常,等等)。

为了让pyparsing检测参数的存在或不存在,您需要定义一个一次读取所有参数的解析器,然后添加一个解析操作来执行验证。那么你应该使用parseString而不是scanString

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62613235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档