我正在尝试提取以特定标题开头的给定文本的内容。
Header Text_A
blablabla
blablablabla
Header Text_B
blablablablablan
blablaa
为此,我以这种方式使用了apparsing 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
效果很好..
你知道我怎么能解决这些问题。
答案 0 :(得分:0)
使用正则表达式检查是否存在特定文本(在本例中为“标题”)。如果它存在,则提取数据部分不会提取。
例如:
text = 'gfgfdAAA1234ZZZuHeadijjk'
text = 'gfgfdHeadAAA1234ZZZuijjk'
text = 'gfgfdAAAHead1234ZZZuijjk'
m = re.search('Head', text)
if m:
extract the data part
else:
do not extract the data part
对于以上所有3个文本值,即无论“Head”一词的位置如何,此代码将检查文本中是否存在“Head”字样并进行相应处理
希望这有帮助。