使用re.split按变量和字符分割字符串时变量未被识别的问题
问题原因与解决方法
你的代码里,"{a1}"是字面量字符串,Python不会自动将其替换为变量a1的值,正则引擎会尝试匹配字符串里的{a1}字符组合,但原文本中根本没有这个内容,所以只有, 的分割规则生效。
解决方式
要让变量值插入到正则表达式中,需要用Python的字符串格式化语法:
1. 使用f-string(推荐,Python 3.6+)
直接用f-string将变量值嵌入正则表达式:
import re a1 = "my" b2 = "Hello! 34 is my number, bye." b2 = re.split(f"{a1}|, ", b2) print(b2) # 输出: ['Hello! 34 is ', ' number', 'bye.']
2. 处理正则特殊字符(关键)
如果变量a1里包含正则元字符(比如., *, ?等),直接插入会导致正则匹配异常,需要用re.escape()转义变量内容:
import re a1 = "my." # 包含正则元字符. b2 = "Hello! 34 is my. number, bye." # 转义后,.会被当成普通字符匹配 b2 = re.split(f"{re.escape(a1)}|, ", b2) print(b2) # 输出: ['Hello! 34 is ', ' number', 'bye.']
3. 其他格式化方式
也可以用str.format()或者字符串拼接(不推荐拼接,易出错):
# str.format()方式 b2 = re.split("{}|, ".format(re.escape(a1)), b2) # 字符串拼接方式(仅当变量无正则特殊字符时可用) b2 = re.split(a1 + "|, ", b2)
内容的提问来源于stack exchange,提问作者rjerhwhrwh
相关产品推荐
相关产品推荐

