>-6ren">
gpt4 book ai didi

python - "Deparsing"使用 pyparsing 的列表

转载 作者:行者123 更新时间:2023-11-28 21:30:19 31 4
gpt4 key购买 nike

是否可以为 pyparsing 提供一个已解析的列表并让它返回原始字符串?

最佳答案

是的,您可以如果您已指示解析器不要丢弃任何输入。您可以使用 Combine 组合器来完成。

假设您的输入是:

>>> s = 'abc,def,  ghi'

这是一个解析器,它获取列表的确切文本:

>>> from pyparsing import *
>>> myList = Word(alphas) + ZeroOrMore(',' + Optional(White()) + Word(alphas))
>>> myList.leaveWhitespace()
>>> myList.parseString(s)
(['abc', ',', 'def', ',', ' ', 'ghi'], {})

“去解析”:

>>> reconstitutedList = Combine(myList)
>>> reconstitutedList.parseString(s)
(['abc,def, ghi'], {})

这会返回初始输入。

但这是有代价的:将所有额外的空白作为标记四处 float 通常并不方便,您会注意到我们必须在 myList 中显式关闭空白跳过 off 。这是一个去除空格的版本:

>>> myList = Word(alphas) + ZeroOrMore(',' + Word(alphas))
>>> myList.parseString(s)
(['abc', ',', 'def', ',', 'ghi'], {})
>>> reconstitutedList = Combine(myList, adjacent=False)
>>> reconstitutedList.parseString(s)
(['abc,def,ghi'], {})

请注意,此时您没有得到文字输入,但这对您来说可能已经足够了。另请注意,我们必须明确告诉 Combine 允许跳过空格。

但实际上,在许多情况下您甚至不关心分隔符;您希望解析器专注于项目本身。有一个名为 commaSeparatedList 的函数可以方便地为您去除分隔符和空格:

>>> myList = commaSeparatedList
>>> myList.parseString(s)
(['abc', 'def', 'ghi'], {})

不过,在这种情况下,“解析”步骤没有足够的信息让重构的字符串有意义:

>>> reconstitutedList = Combine(myList, adjacent=False)
>>> reconstitutedList.parseString(s)
(['abcdefghi'], {})

关于python - "Deparsing"使用 pyparsing 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188746/

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