1

私は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では機能します。奇妙な結果が得られます。

4

1 に答える 1

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]
于 2013-02-09T23:46:01.983 に答える