python 的sub函数详解

  • Post category:Python

首先需要明确一下,sub() 函数属于 Python re (Regular Expression) 正则表达式模块,它用于在一个字符串中进行文本替换。在进行字符串替换时,我们必须使用正则表达式(regex)模式,将需要匹配和替换的文本进行描述。

下面就来详细的讲解一下 sub()函数。

基本语法

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

参数解释:

  • pattern:正则表达式中的模式字符串
  • repl:替换为的字符串
  • string:需要替换的原始字符串
  • count:替换次数;默认 0 表示全部替换
  • flags:可选参数,用于设计正则匹配模式的额外标志

示例1

首先,让我们使用一个简单的示例来说明 sub() 函数的使用。假设我们需要将以下字符串中的所有空格都替换为逗号:

import re

text = '10 Black Cats 20 Pink Horses'

result = re.sub(r'\s', ',', text)

print(result)

这段代码的输出结果为:10,Black,Cats,20,Pink,Horses

在这个例子中,我们将目标字符串传给 sub() 函数,同时提供了一个正则表达式模式,将匹配到的子字符串替换为指定的字符串。在这里,我们使用了 \s正则表达式模式,表示匹配所有的空格符(包括空格、换行、回车、制表符)。我们将其替换为了逗号 ,

示例2

接下来,我们来看一个稍微复杂一些的示例,这个例子演示了如何使用 sub() 函数来实现以下操作:

  • 给定一个字符串列表,使用正则表达式模式和 sub() 函数将其中的数字前面加上 $ 符号。
import re

string_list = ['The price is 10 dollars', 'The price is 20 dollars', 'The price is 30 dollars']

pattern = r'(\d+)'

for i in range(len(string_list)):
    string_list[i] = re.sub(pattern, r'$\g<1>', string_list[i])

print(string_list)

这段代码的输出结果为:['The price is $10 dollars', 'The price is $20 dollars', 'The price is $30 dollars']

我们使用了 \d+ 正则表达式模式,表示匹配一个或多个连续的数字。在 sub() 函数的第二个参数中,我们将 $\g<1> 字符串作为替换文本。这里,\g<1> 使用了正则表达式模式中的捕获组(即匹配模式中用圆括号括起来的部分),表示要在每个匹配的数字前面添加 $ 符号进行替换。

上面这两个示例展示了 sub() 函数的一些基本用法。希望对您有所帮助!