在 Python 中解析 TCL 列表

Mik*_*ton 5 python regex parsing tcl

我需要在双大括号上拆分以空格分隔的 TCL 列表......例如......

OUTPUT = """{{172.25.50.10:01:01-Ethernet 172.25.50.10:01:02-Ethernet {Traffic Item 1}}} {{172.25.50.10:01:02-Ethernet 172.25.50.10:01:01-Ethernet {Traffic Item 1}}}"""
Run Code Online (Sandbox Code Playgroud)

这应该解析为...

OUTPUT = ["""{{172.25.50.10:01:01-Ethernet 172.25.50.10:01:02-Ethernet {Traffic Item 1}}}""", 
    """{{172.25.50.10:01:02-Ethernet 172.25.50.10:01:01-Ethernet {Traffic Item 1}}}"""]
Run Code Online (Sandbox Code Playgroud)

我试过了...

import re
splitter = re.compile('}}\s+{{')
splitter.split(OUTPUT)
Run Code Online (Sandbox Code Playgroud)

然而,这会修剪中心的大括号......

['{{172.25.50.10:01:01-Ethernet 172.25.50.10:01:02-Ethernet {Traffic Item 1}',
'172.25.50.10:01:02-Ethernet 172.25.50.10:01:01-Ethernet {Traffic Item 1}}}']
Run Code Online (Sandbox Code Playgroud)

我不知道如何只在}} {{. 我知道我可以作弊并手动插入缺失的大括号,但我宁愿找到一种简单的方法来有效地解析它。

有没有一种方法来解析OUTPUTre.split(或其他Python解析框架)含空格分隔行任意数量的{{content here}}

Kar*_*ker 3

您可以修改正则表达式以使用正向前行/后向断言,这不会消耗任何字符串:

re.compile('(?<=}})\s+(?={{)')
Run Code Online (Sandbox Code Playgroud)