python最里层匹配括号

要输出一段文字里最里层括号和它们里面的东西,如果不止一对最里层括号,要怎么表示。例如:(((a,b),(c,d)),e),要输出(a,b)和(c,d)... 要输出一段文字里最里层括号和它们里面的东西,如果不止一对最里层括号,要怎么表示。 例如:(((a,b),(c,d)),e), 要输出(a,b)和(c, d) 展开
 我来答
albumin
2013-11-04 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2373万
展开全部
import re
s='(((a,b),(c,d)),e)'
searchs=re.findall("\([^()]+\)",s)
print(searchs)

输出含有最里层括号元素的列表

追问
您好,请问如果不用正则要怎么写呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迷雾中飞
2013-11-04 · TA获得超过335个赞
知道答主
回答量:326
采纳率:0%
帮助的人:224万
展开全部
src= "(r,(i),(f,(a,b),(c,d),e,(g,k),l,(z),o,(4,5),(erer))"


srclist = src.split(",")

for i in range(len(srclist)):
    if "(" in srclist[i] and ")" in srclist[i]:
        print srclist[i]
        continue
    if "(" in srclist[i] and ")" in srclist[i+1] and "(" not in srclist[i+1]:
        print srclist[i] + "," + srclist[i+1]


#out:

(i)
(a,b)
(c,d)
(g,k)
(z)
(4,5)
(erer))


当然,正则代码就要简明很多。对正则不熟。

更多追问追答
追问
请问如果src = '((a-(b-c)(b+c))'这种要怎么写呢
追答

不好意思。上面代码不好。下面是新的代码。

src= "((3,4)((4,5,6))(4-9))"
srclist = list(src)

for i in range(len(srclist)):
    if srclist[i] == ")" and srclist[i-1] != ")":
        tmp = srclist[0:i+1][::-1]
        for j in range(len(tmp)):
            if tmp[j] == "(" :
                print "".join(srclist[i-j:i+1])
                break

out:

(3,4)
(4,5,6)
(4-9)


不知道(3,4)是否符合你所要求的最里层?貌似不符合吧。明天在改改。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
YDhcui
2013-11-04 · TA获得超过161个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:125万
展开全部
l=(((1,2),(4,3),2,((1,6),8)),7)

print(l)
def kh(m):
for v in m:
if type(v) == type(()):
kh(v)
else:
print(v)
kh(l)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式