【发布时间】:2017-09-22 12:50:20
【问题描述】:
我正在使用 pyparsing api 来提取给定输入文本的内容,这些文本通常具有以下结构。
Key1 : Value1 \n
Key2 : Value2 \n
. : . \n
. : . \n
. : . \n
Keyn : . \n
在某些情况下,给定键的值可能很长,因此它被写入多行。
Key_k : Value_k value_k value_k
value_k value_k value_k
当我有一些具有长值的键时,例如上面的示例,我总是只有第一行中的内容。
这是为我的 pyparsing 定义的 BNF:
keyName = Word(pp.alphanums + '_')
unitDef = Suppress('(') + Word(alphanums + '^*/-._') + Suppress(')')
paramValueDef = SkipTo('*' | lineEnd)
paramDef = keyName('name') + pp.Optional(unitDef)('unit') + pp.Suppress(":" + pp.empty) + paramValueDef('value')
key和value写在同一行的时候效果不错。
欢迎任何帮助,并提前感谢您。
【问题讨论】:
-
想象一下所有这些键和值都写在一行上,没有换行符。您如何区分键和值?
-
另外,对于人们放置或不放置空间的位置,尤其是在那些非常重要的
':'s 周围,您希望有多容忍/不容忍? -
感谢您的聪明回答。分隔符是包含“:”符号的新行。关于你的第二个问题,你的意思是只有空格还是回到小说行。
标签: python text-mining pyparsing