我想提取给定文本的内容,以特定标题开头。pyparsing提取给定标题的内容
Header Text_A
blablabla
blablablabla
Header Text_B
blablablablablan
blablaa
为此,我已经使用thepyparsing API那样:
ParserElement.defaultWhitespaceChars=(" \t")
NL = LineEnd().suppress()
END = StringEnd()
header_1=Literal('Header Text_A')
header_2=Literal('Header Text_B')
any_header = (header_1 | header_2)
# text isn't just anything! don't accept header line, and stop at the end of
the input string
text=Group(~any_header + ~END + restOfLine)
overall_structure = ZeroOrMore(Group(any_header +
Group(ZeroOrMore(text))))
overall_structure.ignore(NL)
的代码效果很好,当我只有上述标题中的条目文本。但是,当我有一个条目与上面的例子的标题和另一个文本,它不起作用。 例如,如果我有这样一个条目:
blablablablabla
Header Text_A
blablabla
blablablabla
Header Text_B
blablablablablan
blablaa
它不工作......不过,如果我有只有文字:
Header Text_A
blablabla
blablablabla
Header Text_B
blablablablablan
blablaa
效果很好..
你有什么想法,我该如何解决问题。
如果存在特定标题,您需要单独提取标题部分还是提取数据部分?也请用更简单的例子来解释你的问题。我甚至无法理解成功示例和失败示例之间的区别 – JKC
我需要提取与给定标题相关的数据部分。换句话说,如果我找到了一个给定的头文件,我的函数应该提取该头文件之后的数据......我实现的代码提取了这些信息,尽管它只有当我的文本只包含我拥有的头文件定义。意思是有效的,只有当我有一个包含上面定义的标题的结构的文本。如果我有一个文本前面有一个与标题不匹配的文本,我已经实现的代码不起作用。希望我更清楚,对不起我的英文不好。 – Djo
使用正则表达式来查找特定文本是否存在于标题行中。如果发现然后提取数据部分,否则离开它。 – JKC