Python每日一练——字符串与正则表达式第十、十一关:findall函数和subn函数的使用

185 阅读2分钟

面试题第十关:

第一部分——考点:

  • findall函数的使用

第二部分——面试题:

1.面试题一:用正则表达式查找字符串中所有的Email,并输出这些Email。要求:所有的Email域名必须是.com或.net的。而且不区分大小写。---

第三部分——解析:

import re
s = '我的Email地址是abcd@163.com,他的是xyz@122.net,它的是ccc@543.com'
p = '[0-9a-zA-Z]+@[0-9a-zA-Z]+\.'
a = re.findall(p + 'com|' + p + 'net',s,re.I)
print(a)

在这里插入图片描述

总结:findall函数用于搜索字符串中所有满足条件的字字符串,该函数的第一个参数用于指定正则表达式,第二个参数用于指定待匹配的字符串,第三个字符串用于指定选项,如:re.I表示忽略大小写。


面试题第十一关:

第一部分——考点:

  • subn函数的使用

第二部分——面试题:

1.面试题一:用正则表达式查找字符串中所有的浮点数,并格式化这些浮点数,保留小数点后2位,最后将格式化后的浮点数替换原来的浮点数,同时输出替换后的结果和替换的次数,要求用一条语句实现。


第三部分——解析:

步骤:

  1. 表示浮点数的正则表达式:-?\d+(.\d+)?
  2. 格式化浮点数:format
  3. 如何替换原来的浮点数:sub/subn(并返回替换的次数)

sub和subn都用于替换字符串中所有符合条件的字符串,但sub函数只返回替换后的结果,而subn返回一个元组,元组的第一个元素返回替换后的结果,第二个元素返回替换的次数。

# coding=utf-8
# _author__ = 孤寒者

import re


def fun(matched):
    return format(float(matched.group()), '0.2f')


result = re.subn('-?\d+(\.\d+)?', fun, 'Pi is 3.1415926,e is 2.71828183,-0.2 + 1.3 = 1.1')
print(result)

在这里插入图片描述

🔆In The End!

👑有关于Me

个人简介:我是一个硬件出身的计算机爱好者,喜欢program,源于热爱,乐于分享技术与所见所闻所感所得。文章涉及Python,C,单片机,HTML/CSS/JavaScript及算法,数据结构等。

从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你!

认真仔细看完本文的小伙伴们,可以点赞收藏并评论出你们的读后感。并可关注本博主,在今后的日子里阅读更多技术文哦~

如有错误或者言语不恰当的地方可在评论区指出,谢谢!
如转载此文请联系我征得本人同意,并标注出处及本博主名,谢谢 !