python中的简单模式匹配

时间:2013-02-09 23:03:11

标签: python

我正在尝试在python中编写一个基本的解释器。 所以,我正在尝试声明在命令提示符中输入的字符串是方法还是变量类型。

所以不要尝试任何花哨的东西......

s="12345" #variable
s ="foo()" method
s = "foo(1234)" method

执行此操作的有效方法是什么(例如..对于空格的健壮...如果语法不正确则抛出错误)

我的代码很简单

s = s.strip()

params=   s[s.find("(") + 1:s.find(")")] # find the params..

以上命令适用于案例2和案例3,但案例1 ......它给出了奇怪的结果..

1 个答案:

答案 0 :(得分:1)

对于你被问到的场景,我认为这可以解决问题

去吧

s[ 1+s.find("(") if s.find("(") > 0 else None : -1 if s.find(")") > 0 else None]

编辑: 保罗建议做一点整洁:

s[ 1+s.find("(") if '(' in s else None : -1 if ')' in s  else None]