那么针对题目中提到的三个方法,我分别来进行解释。
re.findall()
re.findall()
是 re
模块提供的一个函数,基本形式为:
re.findall(pattern, string, flags=0)
它的作用是:返回 string
中与正则表达式 pattern
匹配的全部字符串,返回形式为一个列表。其中,第三个参数flags是匹配模式。
以下是一个简单的例子,假设我们需要提取一段文字中的全部手机号码:
import re
text = '我的电话号码是:13512345678,联系我吧!'
phone_numbers = re.findall('\d{11}', text)
print(phone_numbers)
在上面的示例中,我们使用了\d{11}
来匹配字符串中的11个数字,这正好是手机号码的位数。findall()
函数会在字符串中找到满足正则表达式的字符串,然后返回一个列表,包含所有匹配的结果。最终输出的内容是:
['13512345678']
re.sub()
re.sub()
也是 re
模块提供的一个函数,基本形式为:
re.sub(pattern, repl, string, count=0, flags=0)
它的作用是:在 string
中找到与正则表达式 pattern
匹配的所有字符串,并将其替换为 repl
指定的字符串,返回替换后的字符串。其中,第三个参数flags是匹配模式。
下面是一个示例。假设现在我们手上有一份名单,其中某些人的姓名被拼音替代了,请使用 re.sub()
函数将姓名替换成中文。
import re
text = '张三(zhangsan)、李四(lisi)和小明(xiaoming)来自中国'
name_phonetic = {
'zhangsan': '张三',
'lisi': '李四',
'xiaoming': '小明'
}
pattern = re.compile('|'.join(name_phonetic.keys()))
text_chinese = pattern.sub(lambda x: name_phonetic[x.group()], text)
print(text_chinese)
上述代码中,我们先将名字与拼音的对应关系存储在字典 name_phonetic
中,再将字典的key用|
组合成正则表达式。然后使用一个匿名函数取出key对应的value值替换掉名字的拼音。输出结果为:
'张三(张三)、李四(李四)和小明(小明)来自中国'
set()
最后再来看一下set()
函数。实际上set()
函数不是正则表达式的相关函数,而是Python内置的类型转换函数,用于将一个可迭代对象转换成一个集合对象。
例如,假设我们有这样一个列表,里面存放着同一篇文章多次出现的单词:
words = ['apple', 'orange', 'banana', 'apple', 'pear', 'cherry', 'banana']
unique_words = set(words)
print(unique_words)
运行这段代码后,unique_words
会变成集合对象。集合对象有去重的特性,因此输出结果为:
{'orange', 'banana', 'pear', 'cherry', 'apple'}
这里的set()
函数是将列表转化为集合。此函数可以用来去重、交集、并集等操作,平时在数据处理中非常常用。
以上便是关于 re.findall()
、re.sub()
和 set()
函数的介绍,这些工具都在 Python 中提高我们对于字符串操作的便捷性和灵活性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中re.findAll()、re.sub()、set()的使用 - Python技术站