

Python使用re模块实现字符串的替换与劈分 | CHEGVA
source link: https://chegva.com/5645.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Python高级(24)—使用re模块实现字符串的替换与劈分
◎知识点
使用re模块实现字符串的替换
使用re模块实现字符串的劈分
◎脚本练习
▽ 使用re模块实现字符串的替换
"""
当在字符串中替换指定的子串时,借助模块re并通过正则表达式指定被替换的子串可以实现功能更加强大
的替换功能。
模块re提供了两个用于实现字符串替换的方法:
1、sub(pattern, repl, string[, count][, flags])
该方法会将参数string指定的字符串中所有匹配参数pattern的子串替换为参数repl指定的字符串。
其中,参数count用于指定最大替换次数;默认值是0,表示替换所有的匹配。
方法的返回值是替换后得到的字符串。
"""
import re
print(re.sub(r'\d+', '888', '-123-56-89-')) # -888-888-888-
print(re.sub(r'\d+', '888', '-123-56-89-', 2)) # -888-888-89-
"""
参数repl除了可以指定为替换的字符串之外,还可以指定为一个函数。通过该函数,可以把每次匹配
对应的Match对象作为函数的输入(参数),在函数体中对匹配到的子串进行处理,函数的输出(返回值)
作为替换的字符串。
"""
def add1(match):
val = match.group()
num = int(val) + 1
return str(num)
print(re.sub(r'\d+', add1, '-123-56-89-')) # -124-57-90-
"""
当替换字符串为空字符串时,可以实现字符串中子串的删除。
"""
print(re.sub(r'[aeiou]', '', 'HELLO World', flags=re.I)) # HLL Wrld
"""
2、subn(pattern, repl, string, [, count][, flags])
返回值是包含两个元素的元组:(对应的方法sub()的返回值,替换次数)
"""
print(re.subn(r'\d+', add1, '-123-56-89-')) # ('-124-57-90-', 3)
"""
除了直接调用模块re的方法sub( )和subn()之外,也可以调用模块re的方法compile()的返回值的方法: .
sub(repl, string[, count])
subn(repl, string[, count])
模块re的方法sub()和subn()中的参数pattern和flags被转移到了方法compile()中。
"""
pattern = re.compile(r'\d+')
# -888-888-888-
print(pattern.sub('888', '-123-56-789-'))
# -124-57-790-
print(pattern.sub(add1, '-123-56-789-'))
# ('-124-57-790-', 3)
print(pattern.subn(add1, '-123-56-789-'))
▽ 使用re模块实现字符串的劈分
"""
当对字符串进行劈分时,借助模块re并通过正则表达式指定劈分符可以实现更强大的劈分功能。
模块re提供了实现字符串劈分的方法:
split(pattern, string[, maxsplit][, flags])
该方法会根据参数pattern指定的劈分符对参数string指定的字符串进行劈分。
其中,参数maxsplit用于指定最大劈分次数;默认值是0,表示不限制劈分次数。
方法的返回值是劈分后的所有子串组成的列表。
"""
import re
# ['a', 'b', 'c', 'd']
print(re.split(r'\s+', 'a b c d'))
# ['a', 'b', 'c d']
print(re.split(r'\s+', 'a b c d', 2))
# ['a', 'b', 'c', 'd', 'e']
print(re.split(r'[\s\,\;]+', 'a, b;; c , ;d,e'))
"""
除了直接调用模块re的方法split()之外,也可以调用模块re的方法compile()的返回值的方法:
split(string[, maxsplit])
模块re的方法split()中的参数pattern和flags被转移到了方法compile()中。
"""
pattern = re.compile(r'\s+')
# ['a', 'b', 'c', 'd']
print(pattern.split('a b c d'))
# ['a', 'b', 'c d']
print(pattern.split('a b c d', 2))
◎脚本地址:https://github.com/anzhihe/learning/blob/master/python/practise/learn-python/python_senior/regex4.py
Recommend
-
7
python正则表达式替换字符串 作者:the5fire | 标签: html格式化
-
8
Python学习第九天——Python字符串方法'''定义:用', ", """,引起来的连续字符串,只要为变量分配一个值即可,可以使用方括号来截取字符串。字符串一旦创建,将不可修改。一旦修改或者拼接,将会重新生成字符串。
-
6
✨小透明・宸✨2019-09-22 18:44:02封面图:Pixiv ID: 21022013 「お団子BZ サザビースタイル」 by たらやま
-
18
Python进阶(17)—使用标准库中的模块◎知识点模块的概述使用标准库中的模块导入模块的方式
-
9
Python进阶(19)—模块的使用◎知识点使用当前项目中的模块导入的不同模块中存在相同的属性import语句的执行流程
-
4
Python进阶(18)—使用第三方库中的模块◎知识点PyPI简介及下载安装第三方库pip3使用及导入第三方库中的模块...
-
3
Python进阶(20)—模块的使用、安装和配置Anaconda◎知识点搜索到的模块被编译为pyc字节码文件运行被导入的模块重新加载已经被...
-
9
Python进阶(21)—模块的特殊属性◎知识点调用内置函数dir查看模块的所有属性模块的特殊属性之__doc__模块的特殊属性...
-
10
Python高级(23)—正则表达式re模块使用◎知识点re模块search方法re模块findall方法re模块finditer方法
-
5
awk 如何在 Linux 使用 sed 查找和替换文件字符串 sed 是一个轻量级 stream 流编辑器。它可以对文件和输入流执行基本的文本操作 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK