gpt4 book ai didi

python - 使用 pyparsing 的这项特定工作的难度? (初学者)

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:52 24 4
gpt4 key购买 nike

我有一项任务要做,我确信 Python 和 pyparsing 确实可以提供帮助,但我仍然是编程方面的新手,无法就完整实现的挑战性以及是否可行做出明智的选择值得尝试,否则肯定会徒劳无功。

任务是翻译任意长度和嵌套深度的字符串,其结构遵循以下通用语法:

item12345 'topic(subtopic(sub-subtopic), subtopic2), topic2'

像这样的字典中的一个项目:

{item12345, 'topic, topic:subtopic, topic:subtopic:sub-subtopic, topic:subtopic2, topic2'}

换句话说,这个逻辑就像数学一样,紧靠括号左边的项目被分配给里面的所有东西,',' 指定括号内的项,很像加法关于因式的函数的二项式。

到目前为止,对于创建此解决方案,我已经自行发现或找到并理解了一些看似必要的元素的示例。

在 Python 中解析嵌套表达式:

def parenthetic_contents(string):
"""Generate parenthesized contents in string as pairs (level, contents)."""
stack = []
for i, c in enumerate(string):
if c == '(':
stack.append(i)
elif c == ')' and stack:
start = stack.pop()
yield (len(stack), string[start + 1: i])

将一个字符串分发给其他字符串:

from pyparsing import Suppress,Word,ZeroOrMore,alphas,nums,delimitedList

data = '''\
MSE 2110, 3030, 4102
CSE 1000, 2000, 3000
DDE 1400, 4030, 5000
'''

def memorize(t):
memorize.dept = t[0]

def token(t):
return "Course: %s %s" % (memorize.dept, int(t[0]))

course = Suppress(Word(alphas).setParseAction(memorize))
number = Word(nums).setParseAction(token)
line = course + delimitedList(number)
lines = ZeroOrMore(line)

final = lines.parseString(data)

for i in final:
print i

还有一些其他方法,但这些方法不会直接应用于我的最终解决方案,在我充分理解 python 和 pyparsing 以结合这些想法或找到新的想法之前,我还有一段路要走。

我一直在通过寻找示例、寻找类似工作的东西、学习更多 python 和更多 pyparsing 的类和方法来努力研究它,但我不确定我离了解足够的知识还有多远适用于我的完整解决方案的东西,而不仅仅是不适用于一般情况的中间练习。

所以我的问题是这些。为了完成我正在寻找的事情,我最终需要多复杂的解决方案?您有什么建议可以帮助我拉近距离?

提前致谢! (PS - StackOverflow 上的第一篇文章,如果我需要对这篇文章做任何不同的事情,请告诉我)

最佳答案

在 pyparsing 中,您的示例看起来像这样:

from pyparsing import Word,alphanums,Forward,Optional,nestedExpr,delimitedList

topicString = Word(alphanums+'-')
expr = Forward()
expr << topicString + Optional(nestedExpr(content=delimitedList(expr)))

test = 'topic(subtopic(sub-subtopic), subtopic2), topic2'

print delimitedList(expr).parseString(test).asList()

打印

['topic', ['subtopic', ['sub-subtopic'], 'subtopic2'], 'topic2']

转换为 topic:subtopic 等留作 OP 的练习。

关于python - 使用 pyparsing 的这项特定工作的难度? (初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234387/

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