一、实验目的
1. 掌握:字符串格式化方法;
2. 掌握:字符串常用操作split()、strip()、translate()等方法使用;
3. 掌握:正则表达式语法基本语法。
4. 掌握:正则表达式模块re的常用函数用法。
注:本文对re库的使用主要参考菜鸟教程和一篇博客,若对re库的某些用法不理解可以参考一下或私信我
二、实验内容及结果
1. 编写代码,根据完整路径从路径中分离文件路径(只需要分离出一个路径整体即可),文件名及文件扩展名。 str1 = “D:\ \软件\ \python\ \python39\ \Tools\ \scripts\ \abitype.py”
import os
str1 = "D:\\软件\\python\\python39\\Tools\\scripts\\abitype.py"
dirname = os.path.dirname(str1)
basename = os.path.basename(str1)
filename, extension = os.path.splitext(basename)
print("文件路径为:", dirname)
print("文件名为:", filename)
print("文件扩展名为:", extension)
2. 编写函数hanzi_count(str)统计任意字符串中汉字的个数。
def hanzi_count(str):
count = 0
for s in str:
if '\u4e00' <= s <= '\u9fff':
count += 1
return count
string = input("请输入一个字符串:")
print("字符串汉字个数为: ", hanzi_count(string))
3. 编写函数trans(str)实现字符串中数字转化为大写汉字。例如 "0123456789"转化为 “零壹贰叁肆伍陆柒捌玖”。
def trans(str):
intab = "0123456789"
outtab = "零壹贰叁肆伍陆柒捌玖"
transtab = str.maketrans(intab, outtab)
return str.translate(transtab)
string = input("请输入一个字符串:")
print("数字转大写汉字后的字符串为:", trans(string))
4. 编写程序,校验键盘录入的电子邮箱是否合法,并测试。
import re
email = input("请输入一个电子邮箱:")
if re.match("\A([\w\-]+)@([\w\-]+)\.([\w]+)\Z", email):
print("该电子邮箱合法")
else:
print("该电子邮箱不合法")
5. 已知有字符串"张三 张四 王小玲 13208888123 4819599 zhangtom@126.com 676197687211@qq.com 1999-03-26 《凡人修仙传》《水浒传》", 设计正则表达式,并编写代码完成以下功能:
- 提取其中邮箱账号
- 提取手机号码
- 提取小说名称
- 提取日期
import re
def ex_email(string):
email = re.findall("[\w\-]+@[\w\-]+\.[\w]+", string)
if len(email) > 0:
print("字符串中包括的邮箱帐号有:")
for e in email:
print(e, end=" ")
print("\n")
def ex_mob_num(string):
mob_num = re.findall("1[3-9]\d{9}(?:\s|$)", string)
if len(mob_num) > 0:
print("字符串中包括的手机号码有:")
for m in mob_num:
print(m, end=" ")
print("\n")
def ex_nov_name(string):
nov_name = re.findall("《.+》", string)
if len(nov_name) > 0:
print("字符串中包括的小说名称有:")
for n in nov_name:
print(n, end=" ")
print("\n")
def ex_date(string):
date = re.findall("(\d{1,4})-(0?\d|1[0-2])-(3\d|[0-2]?\d)", string)
if len(date) > 0:
print("字符串中包括的日期有:")
for year, month, day in date:
print("{}-{}-{}".format(year, month, day), end=" ")
print("\n")
string = input("请输入一要提取的字符串:")
ex_email(string)
ex_mob_num(string)
ex_nov_name(string)
ex_date(string)
三、实验小结
本周题型针对的是字符串的操作,虽说字符串是最基础的数据类型,但是在目前我自身在日常写代码的过程中,对其相关操作使用还是相对较少的,re库也只是在要用到时粗浅地百度一下复制其用法,就是所谓的浅尝辄止吧。经过本周的作业,我相对详细地去了解了一下re库的使用,发现其功能还是很强大的。另外对于正则表达式的使用,也有了更深刻的理解,以往听说正则表达式在很多地方都可以用,这次总算是相对系统地学习了一下。总体来说,目前对re库及正则表达式的理解使用,我还有很大进步空间,以后还需结合实际开发加深理解。