老男孩python全栈s21day26作业(正则)

1、匹配一篇英文文章的标题 类似 The Voice Of China
[A-Z].*?\n
2、匹配一个网址

# 类似 https://www.baidu.com http://www.cnblogs.com

http://[w]{3}\..*?\.com
3、匹配年月日日期 类似 2018-12-06 2018/12/06 2018.12.06
\d{4}(\-|/|\.)\d{1,2}(\-|/|\.)\d{1,2}
4、匹配15位或者18位身份证号
\d{17}[\d|x]|\d{15}
5、从lianjia.html中匹配出标题,户型和面积,结果如下:

[(‘金台路交通部部委楼南北大三居带客厅 单位自持物业’, ‘3室1厅’, ‘91.22平米’), (‘西山枫林 高楼层南向两居 户型方正 采光好’, ‘2室1厅’, ‘94.14平米’)]

f = open('lianjia.html',mode='r',encoding='utf-8')
#view-source:https://sh.lianjia.com/ershoufang/?utm_source=baidu&utm_medium=pinzhuan&utm_term=biaoti&utm_content=biaotimiaoshu&utm_campaign=sousuo&ljref=pc_sem_baidu_ppzq_x
content = f.read()
f.close()
import re
pattern = '<a class="title" href=.*?data-el="ershoufang">(?P<info>.*?)</a><div class="info">(?P<place>.*?)<span>/</span>(?P<huxin>.*?)<span>/</span>(?P<mianji>.*?)<span>/</span>'

ret = re.findall(pattern,content)
print(ret)
#[('新上笋盘|次顶楼大两房|闹中取静|得房率高|诚意售', '徐家汇', '2室2厅', '120.41平米'), ('高区景观房、户型方正、视野开阔、出行方便、电梯房.', '新华路', '1室1厅', '43.09平米'), ('1989年好房+8/10号线双轨500米+和平公园+2楼+税费各付', '曲阳', '1室0厅', '34.79平米'), ('动迁房免增值税,小一房,房东诚心', '彭浦', '1室1厅', '58.95平米'), ('此房满两年,边套花园比其他的别墅大,阔景边套大花园', '惠南', '3室2厅', '146平米'), ('田林十四村 2室1厅 450万', '田林', '2室1厅', '62.8平米'), ('精装修,出国急售,正宗南北通透,随时看房,3楼层', '莘闵别墅', '2室2厅', '96.95平米'), ('三房精装 业主诚心出售 总价低 看房方便 步行到地铁', '夏阳', '3室1厅', '65.46平米'), ('房型方正,采光无遮挡,中间楼层 近地铁,近医院', '田林', '1室1厅', '31.46平米'), ('精装修 未住过 周六可以看房 诚意出售 欢迎咨询', '植物园', '1室2厅', '56.19平米'), ("xin'shang房源+两梯三户+有车位+居家装修+视野宽阔", '南码头', '3室2厅', '137.23平米'), ('世博板块,房龄新,一梯两户,两房朝南户型好,急售', '世博', '2室1厅', '68.52平米'), ('精装修+中楼层+好租好卖+好停车+税少近地铁公交方便', '桃浦', '1室1厅', '43.82平米'), ('小户型,总价低,刚需房子,交通方便,业主诚意出售', '泗泾', '2室1厅', '67.72平米'), ('满五年,精装修,港汇旁,出行方便', '徐家汇', '2室1厅', '52.92平米'), ('二期,南北通两房,正气两房,不靠马路', '大华', '2室2厅', '86.31平米'), ('动迁房税费少,采光好,装修保养好,边套全明', '春申', '3室2厅', '84.4平米'), ('马陆新上一室,满两年,税少,中间楼层,自住装修', '嘉定新城', '1室1厅', '54平米'), ('房东房子已定,诚心出售。一手动迁看房有钥匙', '惠南', '2室2厅', '78.93平米'), ('一手动迁,视野广,楼层好,税费少', '康桥', '1室1厅', '57.82平米'), ('新上房源  2012年次新小区 房型正气 总价低 诚意出售', '川沙', '2室2厅', '83.21平米'), ('此房满五户型好,楼层好,采光通风棒,地铁站800米', '长征', '2室1厅', '74.12平米'), ('中间楼层   不靠马路   两房朝南   精装修', '丰庄', '2室1厅', '64.87平米'), ('新天地淡水湾+8号楼高区+精装经典南北通+诚售随时看!', '新天地', '3室2厅', '153.04平米'), ('电梯朝南一房,户型方正,视野开阔采光好。', '徐家汇', '1室1厅', '50.9平米'), ('精装修易出租,地铁口,普宅满五唯一,配套完整', '大宁', '1室1厅', '31.13平米'), ('植物园少有三楼 满五唯一  第三排位置佳   出入方便', '上海南站', '1室1厅', '39.4平米'), ('南北2房+客厅朝东高区景观+免增值税+采光无挡!', '西藏北路', '2室1厅', '89.2平米'), ('好房推荐业主跟我已经看好房子、诚意出售、价格可谈!', '莘庄', '2室1厅', '66.7平米'), ('华亭新家银杏苑 满五唯一 精装自住 南北通 看房方便', '松江老城', '2室2厅', '75.18平米')]

# for item in ret:
#     print(item)

6、1-2*((60-30+(-40/5)(9-25/3+7/399/42998+10568/14))-(-43)/(16-3*2))

从上面算式中匹配出最内层小括号以及小括号内的表达式

\(([+|\-|*|/]?\d+)+\)
7、从类似9-25/3+7/399/42998+10568/14的表达式中匹配出乘法或除法
[-]?\d+([*|/]\d+)+
8、通读博客,完成三级菜单

http://www.cnblogs.com/Eva-J/articles/7205734.html

#递归
menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

def menu_func(menu):
    while True:
        for key in menu:
            print(key)
        inp = input('>>>').strip()
        if inp.upper() == 'Q': return 'q'
        if inp.upper() == 'B': return 'b'
        elif menu.get(inp):
            flag = menu_func(menu[inp])
            if flag == 'q': return 'q'
menu_func(menu)
#堆栈
menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}
lst = [menu]
while lst:
    for key in lst[-1]:
        print(key)
    inp = input('>>>')   # 北京
    if inp.upper() == 'Q':break
    elif inp.upper() == 'B':lst.pop()
    elif lst[-1].get(inp):
        lst.append(lst[-1][inp])
9、大作业:计算器

1)如何匹配最内层括号内的表达式
2)如何匹配乘除法
3)考虑整数和小数
4)写函数,计算‘23’ ‘10/5’5)引用4)中写好的函数,完成’23/4’计算

#后面更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值