python学习笔记4--正则表达式和特殊方法

正则表达式

模块为re,需要单独引入。其中常用的函数有:(来自骆峰的博客)

函数 功能
compile(pattern, flags=0) 编译正则表达式返回正则表达式对象
search(pattern, string, flags=0) 搜索字符串中第一次出现正则表达式的模式 成功返回匹配对象 否则返回None
sub(pattern, repl, string, count=0, flags=0) 用指定的字符串替换原字符串中与正则表达式匹配的模式 可以用count指定替换的次数
split(pattern, string, maxsplit=0, flags=0) 用正则表达式指定的模式分隔符拆分字符串 返回列表
findall(pattern, string, flags=0) 查找字符串所有与正则表达式匹配的模式 返回字符串的列表
re.I 不区分大小写
re.VERBOSE 允许在正则表达式中分行并加注释

其中要注意,各个函数中的pattern参数既可以是正则表达式字符串,也可以是re.compile()函数的返回值,二者都可以充当匹配模式pattern。即:

pattern = re.compile(r'(?<=\D)1[34578]\d{9}(?=\D)')	# 其中[]为匹配括号内任意“一位”字符
"""则以下两种写法是完全等价的"""
mylist = re.findall(pattern, sentence)
mylist2 = re.findall(r'(?<=\D)1[34578]\d{9}(?=\D)', sentence)

那么为什么还要使用compile函数多此一举呢?因为compile函数的返回对象有正则表达式字符串所没有的、很方便的、以上函数的“同名”方法,如:

pattern = re.compile(r'(?<=\D)1[34578]\d{9}(?=\D)')
"""则以下三种写法是完全等价"""
mylist = re.findall(pattern, sentence)	# findall为re模块里的函数
mylist2 = re.findall(r'(?<=\D)1[34578]\d{9}(?=\D)', sentence)
mylist3 = pattern.findall(sentence)		# 此findall为pattern对象中的方法
										# 与同名函数findall对应,但是用上不完全相同

这种运用方式对于以上列的各种常用函数来说都是适用的,可以省略对模式的输入。当一种匹配模式要多次使用时,compile的优势便显示出来。

类中其他的“特殊方法”

除了特殊属性__slots__以及特殊方法__init__()以外,类定义中还有其他的特殊方法和属性可以使用(都以双下划线开头双下划线结尾)。

__str__()和__repr__()

该方法返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python学习笔记|字符串与正则表达式练习题答案 1. 练习题1: 题目:给定一个字符串s,找出其中的连续的最长的数字串。 答案:可以通过正则表达式来匹配数字串,然后使用max函数找出最长的。 代码示例: import re def find_longest_num_str(s): num_str_list = re.findall('\d+', s) longest_str = max(num_str_list, key=len) return longest_str s = "ab1234c56789def" print(find_longest_num_str(s)) 输出:56789 2. 练习题2: 题目:给定一个字符串s,将其中的每个空格替换为"%20"。 答案:可以通过正则表达式的sub函数来实现替换。 代码示例: import re def replace_space(s): new_s = re.sub(' ', '%20', s) return new_s s = "Hello World" print(replace_space(s)) 输出:Hello%20World 3. 练习题3: 题目:给定一个字符串s,判断它是否为回文字符串。 答案:可以使用切片操作将字符串反转,然后与原字符串进行比较。 代码示例: def is_palindrome(s): return s == s[::-1] s = "abcba" print(is_palindrome(s)) 输出:True ### 回答2: 以下是关于字符串和正则表达式练习题的答案: 1. 给定一个字符串s,编写一个函数,返回该字符串的反转字符串。 def reverse_string(s): return s[::-1] 2. 给定一个字符串s,编写一个函数,返回是否是回文字符串。 def is_palindrome(s): return s == s[::-1] 3. 给定一个字符串s和一个字符c,编写一个函数,返回字符串s中字符c的出现次数。 def count_char(s, c): return s.count(c) 4. 给定一个字符串s,编写一个函数,返回字符串s中的所有单词列表。 def split_words(s): return s.split() 5. 给定一个字符串s,编写一个函数,返回字符串s中的所有数字列表。 import re def extract_numbers(s): return re.findall(r'\d+', s) 这只是一些可能的答案,其中的解决方法可以有很多种。每个问题都有不同的解决方案,具体取决于个人的编程风格和需求。希望这些答案能够帮助你理解和学习Python中的字符串和正则表达式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值