gpt4 book ai didi

python - pyparsing 条件解析器

转载 作者:行者123 更新时间:2023-12-01 05:04:53 26 4
gpt4 key购买 nike

我需要解析以下三行:

Uptime is 1w2d
Last reset at 23:05:56
Reason: reload

但最后两行并不总是存在,在第一次重新启动之前输出可能如下所示:

Uptime is 1w2d
Last reset

我的解析器看起来像这样:

parser = SkipTo(Literal('is'), include=True)('uptime') +
delimitedList(Suppress(SkipTo(Literal('at'), include=True))'(reset)' +
SkipTo(Literal(':'), include=true) +
SkipTo(lineEnd)('reason'), combine=True)
)

它适用于第一种情况,需要 3 行,但不适用于第二种情况。

最佳答案

我将用于您报告此语法的文件(假设顺序相关):

from pyparsing import Literal, Word, alphanums, nums, alphas, Optional, delimitedList

def createParser():
firstLine = Literal('Uptime is') + Word(alphanums)
secLine = Literal('Last reset at') + delimitedList(Word(nums) + Literal(':') + Word(nums) + Literal(':') + Word(nums))
thirdLine = Literal('Reason:') + Word(alphas)

return firstLine + secLine + Optional(thirdLine)

if __name__ == '__main__':
parser = createParser()
firstText = """Uptime is 1w2d\n
Last reset at 23:05:56\n
Reason: reload"""

print(parser.parseString(firstText))

声明一个解析元素可选,您可以让解析器在它不存在时跳过它,而不会引发任何错误。

关于python - pyparsing 条件解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com