python之re.sub()和subn()和random.sample()

re.sub(pattern, repl, string, count=0, flags=0)

其中三个必选参数:pattern, repl, string

两个可选参数:count, flags

第一个参数:pattern

pattern,表示正则中的模式字符串。

需要知道的是:

反斜杠加数字(\N),则对应着匹配的组(matched group)
比如\6,表示匹配前面pattern中的第6个group
意味着,pattern中,前面肯定是存在对应的,第6个group,然后你后面也才能去引用。

第二个参数:repl
repl,就是replacement,被替换为的字符串的意思。

repl可以是字符串,也可以是函数。
如果repl是字符串的话,其中的任何反斜杠转义字符,都会被处理的。

即:
\n:会被处理为对应的换行符;
\r:会被处理为回车符;
其他不能识别的转移字符,则只是被识别为普通的字符:
比如\j,会被处理为j这个字母本身;
反斜杠加g以及中括号内一个名字,即:\g,对应着命了名的组,named group

第三个参数:string

string,即表示要被处理,要被替换的那个string字符串。

没什么特殊要说明。

第四个参数:count
对于匹配到的内容,只处理其中一部分。

re.subn(pattern, repl, string[, count=0])

与sub()相同, 但返回一个元组, 其中包含新字符串和替换次数。

random.sample(sequence, k)

从指定序列sequence中随机获取指定长度k的片断,不会修改原有序列。

import random
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(list, 5)  # 从list中随机获取5个元素,作为一个片断返回
print slice
print list  # 原有序列并没有改变

结果:

[5, 10, 4, 1, 2]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

### Python `re.sub` 函数详解 #### 功能描述 `re.sub` 是 Pythonre (正则表达式) 模块中的一个重要工具,用于查找并替换字符串中符合特定模式的部分。此功能不仅限于简单的字符替换,还可以利用复杂的正则表达式来定义更精细的匹配规则[^1]。 #### 参数说明 - **pattern**: 要被搜索的正则表达式模式。 - **replacement**: 替代原字符串的新内容,可以是简单字符串或是返回所需替代文本的方法。 - **string**: 需要进行操作的目标字符串。 - **count**(可选): 定义最多替换成多少次,默认为全部替换。 - **flags**(可选): 设置正则表达式的标志位,比如忽略大小写等。 当 replacement 是一个方法时,该方法会接收 match 对象作为参数,并应返回用来代替匹配项的新字符串[^3]。 #### 示例代码 下面的例子展示了如何使用 `re.sub` 将 URL 中的实际域名替换为本地测试服务器地址: ```python import re url = "https://example.com/path/to/resource" pattern = r"https?://[\w.-]+" def replace_domain(match): return "http://127.0.0.1:9091/" out = re.sub(pattern, replace_domain, url) print(out) ``` 这段脚本的结果将是把原始链接里的主机名部分替换成了指定 IP 地址端口号组成的路径[^2]。 另外,在某些情况下,可能希望知道发生了几次替换动作,这时就可以考虑使用同属 re 模块下的另一个相似函数——`re.subn()`,它除了完成相同的工作外还会额外给出实际发生过的替换次数[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值