我有一个消息(字符串),它由事务组成,组由元素<组成/strong>.
我有比循环和调用函数更好的方法来解析这样的消息,循环并调用另一个函数 循环并调用另一个函数因为我发现以下内容很愚蠢:
class Parser:
def parse_msg(self, msg):
trans = re.findall(trans_pattern, msg)
for t in trans:
self.parse_trans(t)
def parse_trans(self, trans):
groups = re.findall(groups_pattern, trans)
for g in groups:
self.parse_group(g)
def parse_group(self, group):
elements = re.findall(element_pattern, group)
for e in elements:
self.parse_element(e)
def parse_element(self, e):
pass
有没有更好的方法/设计模式可以解决这个问题?
最佳答案
嗯,我想有几种可能性。您可以具有如下结构:
import re
GRAMMAR = (
trans_pattern, (
groups_pattern, (
element_pattern, None
)
)
)
def parse_message(msg):
parse_message_rec(msg, GRAMMAR)
def parse_message_rec(msg, grammar):
if grammar is None:
# Leaf element
return
pattern, next_grammar = grammar
children = re.findall(pattern, msg)
for child in children:
parse_message_rec(child, next_grammar)
关于python - 比循环和调用循环调用另一个函数的函数更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51612985/