第五章 字符串及正则表达式

实验目的

1.掌握python字符串拼接、截取、分割、合并、检索和格式化字符串等操作技术。

2.掌握正则表达式的基本语法,应用re模块实现正则表达式匹配等技术。

实例

实例01:使用字符串拼接输出一个关于程序员的笑话

programmer_1 = '程序员甲:搞IT太辛苦了,我想换行......怎么办?'
programmer_2 = '程序员乙:敲一下回车键'
print(programmer_1 + '\n' + programmer_2)

 

 实例02:截取身份证号码中的出生日期

programer_1 = '你知道我的生日吗?'
print('程序员甲说:',programer_1)
programer_2 = '输入你的身份证号码。'
print('程序员乙说:',programer_2)
idcard = '123456199006277890'
print('程序员甲说:',idcard)
birthday = idcard[6:10] + '' +idcard[10:12] + '' +idcard[12:14]+''
print('程序员乙说:''你是' + birthday + '出生的,所以你的生日是'+ birthday[5:])

 

 实例03:输出被@的好友

str1 = '@明日科技 @扎克伯克 @俞敏洪'
list1 = str1.split(' ')
print('您@的好友有:')
for item in list1:
    print(item[1: ])

 

 实例04:通过好友列表生成全部被@的好友

list_friend = ['明日科技','扎克伯格','俞敏洪','马云','马化腾']
str_friend = '@'.join(list_friend)
at = '@'+ str_friend
print('您要@的好友:',at)

 

 实例05:不区分大小写验证会员名单是否唯一

username_1 = '|Mingri|mr|mingrisoft|WGH|MRSoft|'
username_2 = username_1.lower()
ragname_1 = input('输入要注册的会员名称:')
ragname_2 = '|' + ragname_1.lower()+'|'
if ragname_2 in username_2:
    print('会员名:',ragname_1,'已经存在!')
else:
    print('会员名',ragname_1,'可以注册!')

 

 实例06:格式化不同的数值类型数据

import math
print('1251+3950的结果是(以货币形式显示):¥{:,.2f}元'.format(1251+3950))
print('{0:.1f}用科学计数法表示:{0:E}'.format(120000.1))
print('π取5位小数:{:.5f}'.format(math.pi))
print('{0:d}的16进制结果是:{0:#x}'.format(100))
print('天才是由{:.0%}的灵感,加上{:.0%}的汗水。'.format(0.01,0.99))

 

 实例07:验证输入的手机号码是否为中国移动

 

import re
pattern = r'(13[4-9]\d{8})$|(15[01289]\d{8})$'
mobile = '13634222222'
match = re.match(pattern,mobile)
if match == None:
    print(mobile,'表示有效的中国移动手机号码')
else:
    print(mobile,'是有效的中国移动手机号码')
mobile = '13144222221'
match = re.match(pattern,mobile)
if match == None:
    print(mobile,'不是有效的中国移动手机号码')
else:
    print(mobile,'是有效的中国移动手机号码')

 

 实例08:验证是否出现危险字符

import re
pattern = r'(黑客)|(抓包)|(监听)|(Trojan)'
about = '我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan。'
match = re.search(pattern,about)
if match == None:
    print(about,'@ 安全!')
else:
    print(about,'@ 出现了危险词汇!')
about = '我是一名程序员,我喜欢看计算机网络方面的图书,喜欢开发网站。'
match = re.match(pattern,about)

 

 实例09:替换出现的危险字符

import re
pattern = r'(黑客)|(抓包)|(监听)|(Trojan)'
about = '我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan。'
sub = re.sub(pattern,'@_@',about)
print(sub)
about = '我是一名程序员,我喜欢看计算机网络方面的图书,喜欢开发网站。'
sub = re.sub(pattern,'@_@',about)
print(sub)

实例10:输出被@的好友名称(应用正则表达式)

import re
str1 = '@明日科技 @扎克伯格 @俞敏洪'
pattern = r'\s*@'
list1 = re.split(pattern,str1)
print('您@的好友有:')
for item in list1:
    if item !="":
        print(item)

 

 实战一:打印象棋口诀

str1 = '马走日'
str2 = '象走日'
str3 = '车走直路炮翻车'
str4 = '士走斜路护将边'
str5 = '小卒一去不回还'
str6 = ','
str7 = ''
print("象棋口诀:")
print(str1+str6)
print(str2+str6)
print(str3+str6)
print(str4+str6)
print(str5+str7)

 

 

实战二:判断车牌归属地

str1 = '津A·12345','沪A·23456','京A·34567'
for i in range(len(str1)):
    print(''+str(i+1)+'张车牌号码:\n'+str1[i])
    if str1[i][0]=='':
        print('这张号牌的归属地:天津')
    if str1[i][0]=='':
        print('这张号牌的归属地:上海')
    if str1[i][0]=='':
        print('这张号牌的归属地:北京')

 

 实战三:模拟微信抢红包

import random
import decimal
print("------------------------模拟微信抢红包--------------------")
money = float(input("请输入要装入红包的总金额(元):"))
count = int(input("请输入红包的个数(个):"))
for num in range(1,count+1):
    if num == count:
        end = money
    else:
        end = random.uniform(0.01,money)
        end = round(end,2)
        money = money - end
        money = round(money,2)
    print("" + str(count) + "个红包:" + str(end) + "")

 

 

实战四:显示天气预报

weather='2018年4月17日 \t 天气预报:{:s} \t 20℃~7℃ \t 微风转西风3~4级\n \
08:00 \t 天气预报:{:s} \t 13℃ \t 微风\n\
12:00 \t 天气预报:{:s} \t 19℃ \t 微风\n\
16:00 \t 天气预报:{:s} \t 18℃ \t 西风3~4级\n\
20:00 \t 天气预报:{:s} \t 15℃ \t 西风3~4级\n\
00:00 \t 天气预报:{:s} \t 12℃ \t 微风\n\
04:00 \t 天气预报:{:s} \t 9℃  \t 微风'
ans = weather.format('', '', '', '', '', '', '')
print(ans)

 

 

posted @ 2022-10-18 20:36  ShuiLian  阅读(52)  评论(0)    收藏  举报