我有输入A,需要使用Python将其转换为B
答:
[['*', '1', '2', ['-', '4', '3']]]
B:
'1*2+(4-3)'
请帮帮忙好吗?
发布于 2014-01-30 18:54:59
这包括两个部分:
1)对文本进行标记。也就是说,遍历字符并构建仅包含各个部分的小对象。在Python中,您可以为这一部分使用正则表达式,而在其他编程语言中,您只需构建一个小型状态机。因此,在您的示例中,最后的标记列表为:
"[" "[" "*" "1" "2" "[" "-" "4" "3" "]" "]" "]"
2)一旦你有了一个标记列表,你就可以从数组中切下第一个元素并对其做出反应。例如,创建一个执行斩波的函数,然后调用另一个函数来实际执行每个元素。在伪代码中:
fun parseOneElement tokens
switch pop(tokens)
case "[": return parseBrackets(tokens)
case "*": return parseMultiplication(tokens)
case "-": return parseSubtraction(tokens)
else: return it
end
end
fun parseBrackets tokens
result := parseOneElement(tokens)
pop(tokens,"]") or die
return result
end
fun parseMultiplication tokens
arg1 := parseOneElement(tokens)
arg2 := parseOneElement(tokens)
return "(" . arg1 . "*" . arg2 . ")"
end
例如,您所做的是通过获取两个参数来递归解压缩表达式,再次使用parseOneElement。
https://stackoverflow.com/questions/21453053
复制相似问题