返回python中圆括号内的值

返回python中圆括号内的值

问题描述:

我试图提取括号内的下面一行的值。返回python中圆括号内的值

line=(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)) 

预期的答案是:

panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20) 

,但使用以下

pattern=re.compile(r'\((.*?)\)') 
    match = re.search(pattern, line) 

我只收到以下输出。

(panel, wxID_EXIT, wxT("Quit") 

不幸的是,我对正则表达式的了解非常有限。可以有人帮助我得到预期的答案。

+0

那么你明确要求去只对第一个')'。如果你真的不想要,为什么要加上'?'? –

与那.*?,你关掉贪婪方面的正则表达式。只是删除问号再次启用它(默认):

pattern=re.compile(r'\((.*)\)') 

全面测试:

import re 
line='(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20))' 
pattern=re.compile(r'\((.*)\)') 
match = re.search(pattern, line) 
print(match.group(1)=='panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)') 

True 
+0

检查我的编辑。这个正则表达式给出了你要求的结果。 –

+0

是啊...非常感谢:D –

我认为你能避免正则表达式在这里:

text = '''line=(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20))''' 
parts = text.split("=") 
result = parts[1][1:-1] 
+0

它的工作。谢谢 :) –

你可以做:

>>> line='(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20))' 
>>> re.search(r'^\s*\((.*)\)\s*$', line).group(1) 
'panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)' 

或者,直Python中,你可以这样做:

>>> line.strip()[1:-1] 
'panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)' 

其中第一条与.strip()空白字符,然后修剪的一个字符的字符串的两侧与[1:-1]