回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在试着帮助你阅读日志文件。你知道吗</p>
<p>我已经成功地转换了日志文件的每一行,这样我就有了一个Python dict,其中包含了每一行的事实,这意味着我在内存中将该文件作为一个数组,如下所示:</p>
<pre class="lang-js prettyprint-override"><code>[
{'keyword':'a', 'is_pair':True, 'type':'open', 'details':'iwiv', 'linenumber':5},
{'keyword':'a', 'is_pair':True, 'type':'open', 'details':'83fi', 'linenumber':200},
{'keyword':'a', 'is_pair':True, 'type':'open', 'details':'28c8', 'linenumber':360},
{'keyword':'a', 'is_pair':True, 'type':'close', 'details':'28c8', 'linenumber':365},
{'keyword':'a', 'is_pair':True, 'type':'open', 'details':'28c8', 'linenumber':370},
{'keyword':'a', 'is_pair':True, 'type':'close', 'details':'28c8', 'linenumber':375},
{'keyword':'a', 'is_pair':True, 'type':'open', 'details':'aowq', 'linenumber':400},
{'keyword':'b', 'is_pair':True, 'type':'open', 'details':'pwiv', 'linenumber':520},
{'keyword':'b', 'is_pair':True, 'type':'close', 'details':'pwiv', 'linenumber':528},
{'keyword':'d', 'is_pair':False, 'details':'9393', 'linenumber':600},
{'keyword':'b', 'is_pair':True, 'type':'open', 'details':'viao', 'linenumber':740},
{'keyword':'b', 'is_pair':True, 'type':'close', 'details':'viao', 'linenumber':741},
{'keyword':'b', 'is_pair':True, 'type':'open', 'details':'viao', 'linenumber':750},
{'keyword':'b', 'is_pair':True, 'type':'close', 'details':'viao', 'linenumber':777},
{'keyword':'a', 'is_pair':True, 'type':'close', 'details':'aowq', 'linenumber':822},
{'keyword':'a', 'is_pair':True, 'type':'close', 'details':'83fi', 'linenumber':850},
{'keyword':'a', 'is_pair':True, 'details':'iwiv', 'linenumber':990},
{'keyword':'c', 'is_pair':False, 'details':'1212', 'linenumber':997},
]
</code></pre>
<p><strong>我要做的是“配对”</strong>“关键字”匹配**的“最近邻”,比如匹配括号嵌套,并将输出转储为某种标准化的嵌套文本语法,如XML或JSON。你知道吗</p>
<p>我已经知道哪些关键字是“made to stand lone”和“should have a match”,在我的输入中被标记为“is\u pair”</p>
<p>我想给我组合的一对线给出一个“线范围”。。。对于那些单行程序,我不关心它是否是一个“开始”和“结束”对,其中包含相同的数字、空结束、一个完全不同的标签(如我的示例中所示)等等</p>
<p>以下是一些输出<em>可能</em>的示例:</p>
<p><strong>例1</strong></p>
<pre class="lang-xml prettyprint-override"><code><a start="5" end="990">
iwiv
<a start="200" end="850">
83fi
<a start="360" end="365">
28c8
</a>
<a start="370" end="375">
28c8
</a>
<a start="400" end="822">
aowq
<b start="520" end="528">
pwiv
</b>
<d linenumber="600">
9393
</d>
<b start="740" end="741">
viao
</b>
<b start="750" end="777">
viao
</b>
</a>
</a>
</a>
<c linenumber="997">
1212
</c>
</code></pre>
<p><strong>例2</strong></p>
<pre class="lang-xml prettyprint-override"><code><a start="5" end="990" details="iwiv">
<a start="200" end="850" details="83fi">
<a start="360" end="365" details="28c8"/>
<a start="370" end="375" details="28c8"/>
<a start="400" end="822" details="aowq">
<b start="520" end="528" details="pwiv"/>
<d linenumber="600" details="9393"/>
<b start="740" end="741" details="viao"/>
<b start="750" end="777" details="viao"/>
</a>
</a>
</a>
<c linenumber="997" details="1212"/>
</code></pre>
<p><strong>例3</strong></p>
<pre class="lang-js prettyprint-override"><code>[
{
'keyword':'a',
'start':5,
'end':990,
'details':'iwiv',
'inner':[
{
'keyword':'a',
'start':200,
'end':850,
'details':'83fi',
'inner':[
{'keyword':'a', 'details':'28c8'},
{'keyword':'a', 'details':'28c8'},
{
'keyword':'a',
'start':400,
'end':822,
'details':'aowq',
'inner':[
{'keyword':'b', 'start':520, 'end':528, 'details':'pwiv'},
{'keyword':'d', 'linenumber':600, 'details':'9393'},
{'keyword':'b', 'start':740, 'end':741, 'details':'viao'},
{'keyword':'b', 'start':750, 'end':777, 'details':'viao'}
]
}
]
}
]
},
{'keyword':'c', 'linenumber':997, 'details':'1212'}
]
</code></pre>
<p>在编写JSON或XML文件的细节方面,我不一定需要帮助。你知道吗</p>
<p><strong>我不确定的算法,尤其是pythonical算法,是这项工作的“束匹配”方面。</strong></p>
<p>如何将某个东西从一个“线性列表”转换为一个“嵌套”,其中每个带有<code>open</code>的元素与下一个最接近的<code>close</code>的相同关键字匹配,而该关键字还没有被更好的候选关键字“声明”?你知道吗</p>