在 python 中使用 ttp 模块忽略数据
ignoring data using ttp module in python
我将通过以下示例解释我遇到的问题。我能够使用以下配置解析以下数据。当我使用 {{ignore}}
命令时,它帮助我获取该行,因为该行与正确的模板匹配,并忽略我不想拥有的数据。
from ttp import ttp
import json
data_to_parse = """
1.peace in the world
2.peace in the world world
3.peace in the world world world
"""
要解析此数据,我可以使用以下模板。
ttp_template = """
<group name="Quote">
{{peace}} in the {{world}}
</group>
<group name="Quote">
{{peace}} in the {{world}} {{ignore}}
</group>
<group name="Quote">
{{peace}} in the {{world}} {{ignore}} {{ignore}}
</group>
"""
通过以下配置,我可以得到我想要的解析数据:
def parser(data_to_parse):
parser = ttp(data=data_to_parse, template=ttp_template)
parser.parse()
# print result in JSON format
results = parser.result(format='json')[0]
#print(results)
#converting str to json.
result = json.loads(results)
print(result)
parser(data_to_parse)
查看我的输出:
问题是我猜不出每一行有多少个“世界”,我不想继续写{{ignore}}命令获得所需的行并避免我不想拥有的词。例如,如果我在我的数据中添加以下行,它不会被我上面共享的模板捕获,我需要再添加一个 {{ignore}} 来捕获以下数据。
4.peace in the world world world world
我的理解是 ttp 将单词与每个 space 分开的原因。例如,如果我有 _
而不是 'space' 如下 3.peace in the world_world_world
我可以在我的模板中使用简单的一行来获取数据。但是,在我的数据中,我需要注意并捕获带有 space 的行。
所以问题是有什么方法可以促进这个过程吗?如您所见,我有一个解决方法,但是我需要找出一种简单的方法来解决该问题。非常感谢任何建议。
我找到了解决这个问题的方法。 {{ name | PHRASE }}
或 {{ name | ORPHRASE }}
可用于此目的。
{{ name | PHRASE }}
此模式匹配任何短语 - 由单个 space 字符分隔的单词集合,例如“word1 word2 word3”。
{{ name | ORPHRASE }}
在许多情况下,需要提取的数据可以是单个单词或短语,最突出的例子是各种描述,例如接口描述、BGP 对等点描述等。ORPHRASE 允许匹配和提取这样的数据数据。
我将通过以下示例解释我遇到的问题。我能够使用以下配置解析以下数据。当我使用 {{ignore}}
命令时,它帮助我获取该行,因为该行与正确的模板匹配,并忽略我不想拥有的数据。
from ttp import ttp
import json
data_to_parse = """
1.peace in the world
2.peace in the world world
3.peace in the world world world
"""
要解析此数据,我可以使用以下模板。
ttp_template = """
<group name="Quote">
{{peace}} in the {{world}}
</group>
<group name="Quote">
{{peace}} in the {{world}} {{ignore}}
</group>
<group name="Quote">
{{peace}} in the {{world}} {{ignore}} {{ignore}}
</group>
"""
通过以下配置,我可以得到我想要的解析数据:
def parser(data_to_parse):
parser = ttp(data=data_to_parse, template=ttp_template)
parser.parse()
# print result in JSON format
results = parser.result(format='json')[0]
#print(results)
#converting str to json.
result = json.loads(results)
print(result)
parser(data_to_parse)
查看我的输出:
问题是我猜不出每一行有多少个“世界”,我不想继续写{{ignore}}命令获得所需的行并避免我不想拥有的词。例如,如果我在我的数据中添加以下行,它不会被我上面共享的模板捕获,我需要再添加一个 {{ignore}} 来捕获以下数据。
4.peace in the world world world world
我的理解是 ttp 将单词与每个 space 分开的原因。例如,如果我有 _
而不是 'space' 如下 3.peace in the world_world_world
我可以在我的模板中使用简单的一行来获取数据。但是,在我的数据中,我需要注意并捕获带有 space 的行。
所以问题是有什么方法可以促进这个过程吗?如您所见,我有一个解决方法,但是我需要找出一种简单的方法来解决该问题。非常感谢任何建议。
我找到了解决这个问题的方法。 {{ name | PHRASE }}
或 {{ name | ORPHRASE }}
可用于此目的。
{{ name | PHRASE }}
此模式匹配任何短语 - 由单个 space 字符分隔的单词集合,例如“word1 word2 word3”。
{{ name | ORPHRASE }}
在许多情况下,需要提取的数据可以是单个单词或短语,最突出的例子是各种描述,例如接口描述、BGP 对等点描述等。ORPHRASE 允许匹配和提取这样的数据数据。