请解释 Python 的 re 模块中 split()、sub() 和 subn() 这三个方法各自的功能是什么?
考察说明
考查对 Python 正则表达式模块 re 中常用字符串处理方法的功能理解与区分。
回答思路
- 【回答框架 1】split() 方法按照正则表达式匹配的位置对字符串进行切分,返回一个列表。例如 re.split(r'\s+', 'a b c') 会得到 ['a', 'b', 'c']。可以使用 maxsplit 参数限制最大分割次数。
- 【回答框架 2】sub() 方法用替换字符串或函数替换所有匹配正则的子串,返回替换后的新字符串。例如 re.sub(r'\d+', '#', 'a1b2') 返回 'a#b#'。count 参数可限制替换次数。
- 【回答框架 3】subn() 方法与 sub() 功能类似,但返回一个二元组,包含替换后的字符串和替换发生的总次数。例如 re.subn(r'\d+', '#', 'a1b2') 返回 ('a#b#', 2)。
- 【回答框架 4】三者的共同点是都基于正则模式进行匹配。split() 侧重于分割,sub() 和 subn() 侧重于替换,且 subn() 额外提供替换次数的统计信息。
- 【关键点 1】re.split(pattern, string, maxsplit=0) 按正则匹配位置分割字符串,返回列表。
- 【关键点 2】re.sub(pattern, repl, string, count=0) 替换所有匹配项,返回新字符串。
- 【关键点 3】re.subn(pattern, repl, string, count=0) 返回 (新字符串, 替换次数) 元组。
- 【易错点 1】split() 中如果正则可能匹配空字符串,行为可能导致奇怪的切分结果。
- 【易错点 2】sub() 和 subn() 的替换字符串中反斜杠转义需注意,例如替换字符串中的 \n 会被解释为换行符。
- 【易错点 3】三者都返回新对象,原字符串不被修改。