2013-02-09 63 views
1

我想在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.. 

的情况下,两个情况下为三个,但对于案例1上述命令的工作..它给人怪异的结果..

+0

什么你认为'params'是为'12345'吗? – Volatility 2013-02-09 23:05:43

+0

@Volatility:是的..或者在第一和第二种情况下什么也没有 – Fraz 2013-02-09 23:06:27

+0

@Volatility:基本上..这些是我现在想要处理的三种情况..但是我有很多如果elif语句.. – Fraz 2013-02-09 23:07:17

回答

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] 
+0

我认为如果它没有塞进一行就会更清楚。 – 2013-02-10 01:49:27

+0

我认为如果你使用'if'('in s'而不是'if s.find('(')> 0')的更新成语,这也会更清晰。 – PaulMcG 2013-02-10 05:36:44