Python中如何在字符串的特殊字符两侧添加空格?
Python实现特殊字符两侧自动加空格
需求说明
开发中需要对输入字符串做格式化处理,在指定特殊字符(示例中为加号+)的前后分别插入一个空格。例如输入字符串"1+1+1",最终输出结果为1 + 1 + 1。
实现代码
单特殊字符极简实现
如果只需要处理固定单个特殊字符,且确认输入内容里特殊字符两侧没有多余空格,直接用字符串内置的replace方法即可,性能最优:
string = "1+1+1" result = string.replace('+', ' + ') print(result)
运行输出:
1 + 1 + 1
多特殊字符通用实现
如果需要同时处理多个特殊字符,或者输入内容可能存在不规则的原有空格,可以用正则实现,自动去重多余空格,适配更多场景:
import re def format_special_chars(input_str: str, chars: str) -> str: # 构建匹配规则:匹配目标特殊字符及其两侧任意数量的空白字符 match_pattern = rf'\s*([{re.escape(chars)}])\s*' # 统一替换为两侧带单空格的格式,最后清除首尾多余空格 return re.sub(match_pattern, r' \1 ', input_str).strip() # 测试示例1:单特殊字符场景 string = "1+1+1" print(format_special_chars(string, chars='+')) # 输出:1 + 1 + 1 # 测试示例2:多运算符场景 test1 = "3*4-2+5/1" print(format_special_chars(test1, chars='+-*/')) # 输出:3 * 4 - 2 + 5 / 1 # 测试示例3:带不规则原有空格场景 test2 = "2 + 6* 7" print(format_special_chars(test2, chars='+*')) # 输出:2 + 6 * 7
注意点
- 通用实现里的
re.escape()是用来自动转义正则元字符的,传入*、+、?这类有特殊正则含义的字符时不需要手动加转义符,避免匹配出错 - 如果不需要处理多字符、不规则空格场景,优先用
replace方案,没有额外依赖,执行效率更高
内容的提问来源于stack exchange,提问作者MoonGoose
相关产品推荐
相关产品推荐

