pyparsing提取给定头部的内容

2024-09-30 22:11:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图提取以特定标题开头的给定文本的内容。你知道吗

Header Text_A
blablabla
blablablabla

Header Text_B
blablablablablan
blablaa

为此,我以这种方式使用了pyparsing 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

它工作得很好。。你知道吗

你知道我怎样才能解决这些问题吗。你知道吗


Tags: text文本标题nlgroupany条目end
1条回答
网友
1楼 · 发布于 2024-09-30 22:11:28

使用regex检查是否存在特定的文本(在本例中是“Header”)。如果存在,则提取数据部分,否则不提取。你知道吗

例如:

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”是否出现在文本中并进行相应处理

希望这有帮助。你知道吗

相关问题 更多 >