python练习题(六)正则表达式
1、提示用户输入自己的名字、年龄、身高,并将该用户信息以JSON格式保存在文件中。再写一个程序读取刚刚保存的JSON文件,恢复用户输入的信息。
import json
name = input('请输入您的名字: ')
while True:try: #采用异常处理机制,保证输入的格式正确age = int(input('请输入您的年龄: '))breakexcept:print('年龄需要您输入整数')
while True:try:height = float(input('请输入您的身高: '))breakexcept:print('身高需要您输入浮点数')
with open('my.txt', 'w+') as f: #打开my.txt文件,如果不存在,就建立json.dump({'name': name, 'age': age, 'height': height}, f) #转换为json格式,保存在文件中with open('my.txt', 'r') as f: #打开my.txt文件my_info = json.load(f) #从json格式转化成python格式print(my_info['name']) #打印出信息print(my_info['age'])print(my_info['height'])
2、给定一个字符串,该字符串只包含数字0~9、英文逗号,英文点号,请使用英文逗号、英文点号将它们分割成多个子串。
import re, sys
while True:string = input('输入字符串: ')if string == 'exit':sys.exit(0)if not re.fullmatch('[0-9,\.]+', string):raise ValueError("您的输入只能包含0-9数字、英文逗号、英文点号")rt_list = re.findall('[0-9]+', string)print(rt_list)
3、定义一个正则表达式,用于验证国内的所有手机号码。
import re, syswhile True:string = input('请输入手机号: ')if string == 'exit':sys.exit(0)if re.fullmatch('^(1[358][0-9]|14[579]|16[6]|17[0135678]|19[89])\d{8}$', string):print('是手机号码')else:print('不是手机号码')
4、提示用户输入一个字符串,程序使用正则表达式获取该字符串中第一次重复出现的英文字母(包括大小写)。
import re, syswhile True:string = input('请输入字符串: ')if string == 'exit':sys.exit(0)m = re.findall(r'([a-zA-Z])[\w ]*?\1', string)if m:print(m[0])
5、提示用户输入一个字符串和一个子串,打印出该子串在字符串中出现的start和end位置:如果没有出现,则打印(-1, -1)。
import re
string, sub = input("请输入第一个字符串: "), input('请输入子串: ')
matches = list(re.finditer(r'(?={})'.format(sub), string))
if matches:print('\n'.join(str((match.start(),match.start() + len(sub) - 1)) for match in matches))
else:print('(-1, -1)')
6、提示用户输入两行,第一行是所有学习python的学员编号(以逗号隔开),第二行是所有学习Java的学员编号(以逗号隔开),计算所有只学python不学java的学员的数量。
import repython_set = set(re.findall('[^,\.\s]+', input('学习Python的学员: ')))
java_set = set(re.findall('[^,\.\s]+', input('学习Java的学员: ')))
print(python_set)
print(java_set)
diff = python_set - java_set
print('只学Python不学Java的学员:', diff)
print('只学Python不学Java的学员有%d人' % len(diff))
7、提示用户输入两行,第一行是所有学习python的学员编号(以逗号隔开),第二行是所有学习Java的学员编号(以逗号隔开),计算所有既学python又学java的学员的数量。
import repython_set = set(re.findall('[^,\.\s]+', input('学习Python的学员: ')))
java_set = set(re.findall('[^,\.\s]+', input('学习Java的学员: ')))
print(python_set)
print(java_set)
inter = python_set & java_set
print('既学Python又学Java的学员:', inter)
print('既学Python又学Java的学员有%d人' % len(inter))
8、计算用户输入的两个带时区的时间戳字符串之间相差的秒数。
from datetime import datetime as dtfmt = '%a %d %b %Y %H:%M:%S %z'
for i in range(int(input('请输入要比较几组:'))):print(int(abs((dt.strptime(input('第一个时间:'), fmt) - dt.strptime(input('第二个时间:'), fmt)).total_seconds())))
例如:
9、提示用户输入一个字符串,程序要输出该字符串中出现次数最多的3个字符,以及对应的出现次数。
from collections import Counterstring = input('请输入一个字符串: ')
c = Counter(string)
[print(t[0]) for t in c.most_common(3)]
10、定义一个fibonacci(n)函数,该函数返回包含n个元素的裴波那契数列的列表。再使用lambda表达式定义一个平方函数,程序最终输出裴波那契数列的前n个元素的平方值。
def fibonacci(n):rvt_list = [1, 1]# 生成fibonacci数列[rvt_list.append(rvt_list[-1] + rvt_list[-2]) for i in range(2, n)]return rvt_list
print(fibonacci(10))
# 计算fibonacci数列的元素的平方
x = map(lambda x: x*x , fibonacci(10))
print([e for e in x])
python练习题(六)正则表达式相关推荐
- Python练习题六
博主:
- 《Python进阶系列》十六:详解Python中的正则表达式
正则表达式 概述 正则表达式为高级的文本模式匹配.抽取.与/或文本形式的搜索和替换功能提供了基础.简单地说,正则表达式是一些由字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,于是正则 ...
- 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2
孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...
- python(六)动态网页爬虫
python(六)动态网页爬虫 什么是动态网页爬虫 动态网页 在网站不重新加载的情况下(网页的url不发生改变),通过ajax技术动态更新网站中的局部数据. ajax 异步JavaScript和XML ...
- Python第六周作业
Python第六周作业 1. 正则表达式的点星匹配 2. 计算函数曲线与x轴包围的面积 3. 哥德巴赫猜想 4. 鸡兔同笼B 5. 与7无关的数 6. 完美立方数 7. 高次方程求根 8. 在终端输出 ...
- 站长在线零基础Python完全自学教程20:在Python中使用正则表达式完全解读
欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第20课< 在Python中使用正则表达式完全解读>.本节课是一个大课,我分 ...
- 05、Python爬虫之正则表达式常用方法(超全)
文章目录 前言 一.search()函数 二.match()函数 三.compile()函数 四.findall()函数 五.sub()函数 六.subn()函数 七.split()函数 八.补充说明 ...
- (收藏)Python 10个正则表达式写法
关于Python 10个正则表达式写法 主要是用到了 re这个库 (1).其中re.compile用于编译正则表达式,生成一个正则表达式( Pattern )对象 (2). .findall用于在字符 ...
- 站长在线Python精讲:在Python中使用正则表达式的sub()方法替换字符串详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用正则表达式的sub()方法替换字符串详解>. 在Python中使用正则表达式的sub()方法替换字符串. ...
- Python练习题__目录(更新中。。。)
Python练习题__目录 人生有时真的很无助,特别是当社会走向了极端,当我们一无所知地憧憬着美好的未来时,却不知原本属于我们生来就拥有的一切,会被某些...暗中窥视后强行夺走(亲人.健康.技术.生命 ...
最新文章
- 【制作镜像】BCEC制作镜像
- excel在线_怎么能在线免费将PDF转Excel?
- 帝国cms文章页调用当前文章URL如何操作?
- linux read nchars,Linux常用命令--read
- *【POJ - 3061】 Subsequence (尺取或二分)
- 时空大数据实践之GeoWave安装部署实践
- Python实现局域网内屏幕广播的技术要点分析
- nginx ---- 背景介绍及环境准备
- 如何精简持仓基金数量?
- 在HDFS集群中优化secondary namenode到datanode1节点上,并做重启hdfs集群后,datanode1启动失败...
- Cognos 11.0快速开发指南 Ⅱ
- java 权限管理都用什么_java权限管理框架有哪些?
- Oracle数据库备份与还原语句
- 几十个精选壁纸网站,配色网站,字体网站
- 嵌入式开发培训学哪些?嵌入式培训课程好学吗
- HTML做一个简单的页面(纯html代码)地球专题学习网站
- 灰色关联分析法详细步骤解释
- Android隐藏软件盘
- 悟空 mobile.php,悟空crm系统pc+手机端PHPJAVA源码授权永久使用
- C语言 求最大值和最小值
热门文章
- KDD 2019|DuerQuiz:一个面向智能招聘笔试、面试的个性化试题推荐系统
- 3.关于普通三极管的类型及引脚判断
- Python GUI编程(Tkinter) 之 股票选股器
- 禾赛科技获得新融资背后:缺钱又缺爱,花钱求人和解专利官司
- sz和rz命令:提示*B00000000000000
- Jeff Bezos计划回收阿波罗11号飞船引擎
- 银行取款--Python学习小实例
- [转]阳光加利福尼亚 --土老冒的硅谷、旧金山见闻
- 计算机 ps 文书,什么是补充文书?它和PS有啥区别?答案都在这了!
- Facebook 、Twitter、Snapchat等巨头齐聚GMIC在线,畅谈营销增长