Python_48split方法

分割

import re
a='qwertayugehello alext hey ok gou qqdfdffff'
p1=a.split('a')
print (p1)#['qwert', 'yugehello ', 'lext hey ok gou qqdfdffff']
p=re.split('a',a)#可以设定最多分割多少次
print (p)#['qwert', 'yugehello ', 'lext hey ok gou qqdfdffff']
p=re.split('a\w',a)
print (p)#['qwert', 'ugehello ', 'ext hey ok gou qqdfdffff']
p=re.split('a\w+',a)
print (p)#['qwert', ' ', ' hey ok gou qqdfdffff']
p=re.split('(a\w)+',a)
print (p)#['qwert', 'ay', 'ugehello ', 'al', 'ext hey ok gou qqdfdffff']
p=re.split('(a\w+)',a)
print (p)#['qwert', 'ayugehello', ' ', 'alext', ' hey ok gou qqdfdffff']
#1-(2*5)+(9/3)+(10/2)+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90
y='1-(2*5)+(9/3)+(10/2)+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90'
a=re.split('\([^()]\)',y)
print (a)#['1-(2*5)+(9/3)+(10/2)+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90']
a=re.split('\(([^()]+)\)',y)
print (a)#['1-', '2*5', '+', '9/3', '+', '10/2', '+', '2-3*3-4*5+30+4/2+6/2', '+2*', '-3*3', '/', '4/2', '+90']


def jisuan(suanshizi1):#计算出的是计算式子的结果
return eval(suanshizi1)


#计算器的实现
while True:
result=re.split('\(([^()]+)\)',y,1) #遇见()就分割为两半
if len(result)==3:
print (y)
before=result[0]
suanshi=result[1]
after=result[2]
#以上三行的直接表达形式是 before,suanshi,after=result
value=jisuan(suanshi)
new_y=before+str(value)+after
y=new_y
else:
end_value=jisuan(y)
print (end_value)
break


输出结果:

['qwert', 'yugehello ', 'lext hey ok gou qqdfdffff']
['qwert', 'yugehello ', 'lext hey ok gou qqdfdffff']
['qwert', 'ugehello ', 'ext hey ok gou qqdfdffff']
['qwert', ' ', ' hey ok gou qqdfdffff']
['qwert', 'ay', 'ugehello ', 'al', 'ext hey ok gou qqdfdffff']
['qwert', 'ayugehello', ' ', 'alext', ' hey ok gou qqdfdffff']
['1-(2*5)+(9/3)+(10/2)+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90']
['1-', '2*5', '+', '9/3', '+', '10/2', '+', '2-3*3-4*5+30+4/2+6/2', '+2*', '-3*3', '/', '4/2', '+90']
1-(2*5)+(9/3)+(10/2)+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90
1-10+(9/3)+(10/2)+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90
1-10+3.0+(10/2)+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90
1-10+3.0+5.0+(2-3*3-4*5+30+4/2+6/2)+2*(-3*3)/(4/2)+90
1-10+3.0+5.0+8.0+2*(-3*3)/(4/2)+90
1-10+3.0+5.0+8.0+2*-9/(4/2)+90
88.0

 

posted on 2018-03-30 17:17  JuGooLar  阅读(239)  评论(0编辑  收藏  举报

导航