You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:42:31