假设您的输入由许多示例模板组成,这些模板没有任何可见的分隔符,只有内联表达式。你知道吗
sample_tmp_1 = """
IKE peer REMOTE.END.RANDOM.IP., Index 1651435,
Gateway Role: IKE-GATEWAY
REMOTE.END.RANDOM.IP.:500
"""
sample_tmp_2 = """
IKE peer REMOTE.END.RANDOM.IP.,
REMOTE.END.RANDOM.IP.:500Index 1651435,
Gateway Name: IKE-GATEWAY
"""
您需要基于一个内联表达式从几十个模板中解析某些信息。 我解决这个问题的一个方法是对变量进行迭代
for line in sample_tmp_1.split("\n"):
if "Role:" in line:
Role = do_X(line,'Role')
if "IKE peer" in line:
do_Y
and use regular expressions for
for line in sample_tmp_2.split("\n"):
if "Role:" in line:
do_X
if "IKE peer" in line:
do_Y
def do_X:
return re.search(Parameter, Data)
def do_Y:
pass
如果模板的数据结构可能与使用regex组时的数据结构不同,那么这些模板将非常具有包容性,因为我将在获取值位置方面发挥很大作用。你知道吗
INBOUND = re.search(".*(show.*)",text)
if INBOUND:
key = INBOUND.group(1)
但是,我不能仅仅认为没有库(类似于Lex设置yacc解析器使用的语法规则)可以直接从基于Python表达式的模板解析数据。你知道吗
有图书馆协助这项工作吗?你知道吗
例如:
>>> from jinja2 import Template
>>> t = Template("Hello {{ something }}!")
>>> t.render(something="World")
能够搜索关键字
print(Do_X(t.render, Template))
"World"
谢谢你的帮助!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐