python最里层匹配括号
要输出一段文字里最里层括号和它们里面的东西,如果不止一对最里层括号,要怎么表示。例如:(((a,b),(c,d)),e),要输出(a,b)和(c,d)...
要输出一段文字里最里层括号和它们里面的东西,如果不止一对最里层括号,要怎么表示。 例如:(((a,b),(c,d)),e), 要输出(a,b)和(c, d)
展开
展开全部
import re
s='(((a,b),(c,d)),e)'
searchs=re.findall("\([^()]+\)",s)
print(searchs)
输出含有最里层括号元素的列表
追问
您好,请问如果不用正则要怎么写呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)是否符合你所要求的最里层?貌似不符合吧。明天在改改。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)
print(l)
def kh(m):
for v in m:
if type(v) == type(()):
kh(v)
else:
print(v)
kh(l)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询