博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
re模块,三级菜单,计算器(待完善)
阅读量:5021 次
发布时间:2019-06-12

本文共 3413 字,大约阅读时间需要 11 分钟。

#!/usr/bin/env python # -*- coding:utf-8 -*- import re # 1、匹配一篇英文文章的标题 类似 The Voice Of China ''' s = r'(?:[A-Z][a-z]+ ?)+' ret = re.findall(s, 'The Voice Of China Of China') print(ret) ''' # 2、匹配一个网址 # 类似 https://www.baidu.com http://www.cnblogs.com ''' s = r'https?://www\.[A-Za-z]+\.com' ret = re.findall(s, 'https://www.baidu.com http://www.cnblogs.com') print(ret) ''' # 3、匹配年月日日期 类似 2018-12-06 2018/12/06 2018.12.06 ''' s = r'-?\d{1,4}(-|/|\.)((0[1-9])|(1[0-2]))\1((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))' ret = re.findall(s, '2018-12-06') print(ret) ''' # 4、匹配15位或者18位身份证号 ''' (\d{6}(19|20)\d\d(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[01])\d\d\d(\d|x))+|(\d{8}(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[01])\d{3}) ''' # 5、从lianjia.html中匹配出标题,户型和面积,结果如下: # [('金台路交通部部委楼南北大三居带客厅   单位自持物业', '3室1厅', '91.22平米'), ('西山枫林 高楼层南向两居 户型方正 采光好', # '2室1厅', '94.14平米')] ''' import re pattern = '
.*?data-sl="">(?P
.*?)</a>.*?
/(?P
.*?)' \ '
/(?P
.*?)
' with open(r'D:\homework\day26\1', 'r', encoding='utf-8')as f: s = f.read() ret = re.findall(pattern, s, re.S) print(ret) ''' # 6、1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2)) # 从上面算式中匹配出最内层小括号以及小括号内的表达式 ''' \([^()]+\) ''' # 7、从类似9-2*5/3+7/3*99/4*2998+10*568/14的表达式中匹配出乘法或除法 ''' \d+((\*|/)\d+)+ ''' # 8、通读博客,完成三级菜单 # http://www.cnblogs.com/Eva-J/articles/7205734.html ''' menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {}, '网易': {}, 'google': {} }, '中关村': {
'爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': {
'百度': {}, }, }, '昌平': {
'沙河': {
'老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': {
'闵行': {
"人民广场": {
'炸鸡店': {} } }, '闸北': {
'火车战': {
'携程': {} } }, '浦东': {}, }, '山东': {}, } lst = [menu] while True: for i in lst[-1]: print(i) user = input('请选择:') if user.upper() == 'B': lst.pop() elif user.upper() == 'Q': break elif lst[-1].get(user): lst.append(lst[-1][user]) print('已结束') ''' # 9、大作业:计算器 # 1)如何匹配最内层括号内的表达式 ''' \(([^()]+)\) ''' # 2)如何匹配乘除法 ''' \d+((\*|/)\d+)+ ''' # 3)考虑整数和小数 ''' (\d+\.?\d+)|\d+ ''' # 4)写函数,计算‘2*3’,‘10/5’ ''' import re def count(suanshi): a, b, c = re.split(r'([*/])', suanshi, ) a = int(a) c = int(c) if b == '*': print(a*c) elif b == '/': print(a/c) count('10/5') ''' # 5)引用4)中写好的函数,完成'2*3/4'计算 ''' import re def count(suanshi): try: while 1: x = re.search(r'\d+[*/]\d+', suanshi) a, b, c = re.split(r'([*/])', x.group()) a = int(a) c = int(c) if b == '*': res = a * c elif b == '/': res = int(a / c) suanshi = suanshi.replace(x.group(), str(res), 1) print(suanshi) except Exception as e: print('ok') count('2*3*46*3*43*43/43*43/4*53*3') '''

转载于:https://www.cnblogs.com/zjx1/p/10821190.html

你可能感兴趣的文章
CodeForces A. Points in Segments
查看>>
PAT 甲级 1007 Maximum Subsequence Sum
查看>>
#Leetcode# 3. Longest Substring Without Repeating Characters
查看>>
HDU 2014 青年歌手大奖赛_评委会打分
查看>>
ie下警告console未定义
查看>>
STM32加密擦除
查看>>
Façade(Chapter 10 of Pro Objective-C Design Patterns for iOS)
查看>>
浅谈Java的学习之路——怎样学好JAVA ?
查看>>
常用正则表达式语法
查看>>
bg-route
查看>>
iOS中使用RSA加密
查看>>
codeforces 446A DZY Loves Sequences
查看>>
Android四个基本组件(2)之Service 服务与Content Provider内容提供商
查看>>
关于未成品的问题:字符类型和其他种种
查看>>
使用网页播放器
查看>>
SQL Server死锁总结
查看>>
liunx服务器安装jdk
查看>>
索引何时需要、何时不需要、何时失效
查看>>
如何利用批处理文件获取前一天的日期
查看>>
mysql3
查看>>