python正则表达式

题目

  1. 编写代码,根据完整路径从路径中分离文件路径(只需要分离出一个路径整体即可),文件名及文件扩展名。 str1 = "D:\ \软件\ \python\ \python39\ \Tools\ \scripts\ \abitype.py"

  2. 编写函数hanzi_count(str)统计任意字符串中汉字的个数。

  3. 编写函数trans(str)实现字符串中数字转化为大写汉字。例如 "0123456789"转化为 "零壹贰叁肆伍陆柒捌玖"。

  4. 编写程序,校验键盘录入的电子邮箱是否合法,并测试。

  5. 已知有字符串"张三 张四 王小玲 1320888XX23 4XX9599 XXXtom@126.com 676197687211@qq.com 1999-03-26 《凡人修仙传》《水浒传》", 设计正则表达式,并编写代码完成以下功能:

  • 提取其中邮箱账号
  • 提取手机号码
  • 提取小说名称
  • 提取日期

代码

1.编写代码,根据完整路径从路径中分离文件路径(只需要分离出一个路径整体即可),文件名及文件扩展名。 str1 = "D:\ \软件\ \python\ \python39\ \Tools\ \scripts\ \abitype.py"

思路:os.path模块或split()方法,我这里只写了os.path

import os
def file(path):
    filepath,filename=os.path.split(path)
    filename1,extension=os.path.splitext(filename)
    print("您输入的完整文件路径为:{0}\n文件路径: {1}\n文件名为: {2}\n\
扩展名为: {3}".format(path,filepath,filename,extension))

str1 = "D:\\软件\\python\\python39\\Tools\\scripts\\abitype.py"
file(str1)

运行结果:

 

2.编写函数hanzi_count(str)统计任意字符串中汉字的个数。

思路:首先导入re模块,然后指定书上给的匹配给定字符串中常用汉字,正则表达式[\u4e00-\u9fa5]指定完后就就引用该正则表达式,findall()里面写出传入的字符串就可以找出汉字了。

import re

def hanzi_count(str):
    hanzi_count = re.compile('[\u4e00-\u9fa5]')

    hanzi_dict = hanzi_count.findall(str)
    
    hanzi_join=''.join(hanzi_dict)
    print("该输入的字符里有 {0} 个汉字分别是:\n{1}".
          format(len(hanzi_dict), hanzi_join))

hanzi=input("请输入任意字符,但要确保里面含有汉字:")
hanzi_count(hanzi)

运行结果:

 

 

3. 编写函数trans(str)实现字符串中数字转化为大写汉字。例如 "0123456789"转化为 "零壹贰叁肆伍陆柒捌玖"。

han_number= ["零", "壹", "贰", "叁",
             "肆", "伍", "陆", 
             "柒", "捌", "玖"]
def trans(str):
    count = " "
    for i in range(len(str)):
        num = int(str[i])
        count += han_number[num]
    print(count)
Str=input("请输入数字:")
S=trans(Str)

运行结果:

4.编写程序,校验键盘录入的电子邮箱是否合法,并测试。

思路:格式就是最前面数字,字母所以我这里想到的是\w然后艾特符号@后面就是字符再后来就是"."后面又是字符所以['\w+@+\w+\.+\w']

import re
def Mail(Mail):
    if re.findall('\w+@+\w+\.+\w',Mail):
        print("合法!")
    else:
        print("不合法!!!")
mail=input("请输入邮箱账号:")
Mail(mail)

运行结果:

 

5.已知有字符串"张三 张四 王小玲 1320888XX23 4XX9599 XXXtom@126.com 676197687211@qq.com 1999-03-26 《凡人修仙传》《水浒传》", 设计正则表达式,并编写代码完成以下功能:

思路:首先导入提出给定的字符串,然后用re模块调用findall()方法来写出正则表达式的条件,然后就输出。

import re
str1="张三 张四 王小玲 13208888123 4819599\
    zhangtom@126.com ,676197687211@qq.com 1999-03-26 \
   《凡人修仙传》《水浒传》"
telephon1,telephon2=re.findall('(13[2-9]\d{8}|\d{7} )',str1)
mail1,mail2=re.findall('\w+@+\w+\.+\w', str1)
novel1,novel2=re.findall('\《+[\u4e00-\u9fa5]+\》',str1)
date=re.findall('\d{4}-\d{1,2}-\d{1,2}',str1)

print("手机号码为:{0}\t{1}\n邮箱账号为:{2}\t{3}\n\
小说名称为:{4}\t{5}\n日期为:{6}".format(telephon1,telephon2
,mail1,mail2,novel1,novel2,date[0]))

运行结果:

 

感觉写的好乱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值