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

优化代码:实现字母与符号间加空格并排除括号内内容及无效字符处理

解决方案

完整代码

import re

# 定义无效字符替换规则
INVALID_CHAR_REPLACEMENTS = {
    "<": "(", ">": ")",
    ":": ";", "/": "-", "\\": "-", "|": "-", "*": "-", '"': "''"
}

def replace_invalid_chars(text):
    """替换文本中的无效字符为合法字符"""
    trans_table = str.maketrans(INVALID_CHAR_REPLACEMENTS)
    return text.translate(trans_table)

def add_space_around_symbols(text):
    """在括号外的字母与符号之间添加空格"""
    # 处理字母后紧跟符号的情况(如 ")Code" → ") Code")
    text = re.sub(r'(?<=[a-zA-Z])(?![^()]*\))(?![^\[\]]*\])([^\w\s()\[\]])', r' \1', text)
    # 处理符号后紧跟字母的情况(如 "-Example" → "- Example")
    text = re.sub(r'([^\w\s()\[\]])(?![^()]*\))(?![^\[\]]*\])(?=[a-zA-Z])', r'\1 ', text)
    return text

def process_text(text):
    """完整处理流程:先替换无效字符,再添加空格"""
    text = replace_invalid_chars(text)
    text = add_space_around_symbols(text)
    # 去除多余连续空格(可选,根据需求调整)
    text = re.sub(r'\s+', ' ', text).strip()
    return text

关键部分解释

  1. 无效字符替换
    使用str.maketrans创建字符转换表,批量替换无效字符,比循环替换效率更高,规则可灵活修改。

  2. 括号外的空格添加逻辑
    两个正则表达式通过负向断言确保只修改括号外的内容:

    • (?![^()]*\)):断言当前位置后面没有未闭合的圆括号(即不在圆括号内)
    • (?![^\[\]]*\]):断言当前位置后面没有未闭合的方括号(即不在方括号内)
      匹配目标为非单词、非空格、非括号的符号,分别处理符号在字母前/后的情况,添加空格分隔。
  3. 可选的多余空格清理
    最后添加连续空格合并逻辑,避免多次替换后出现冗余空格,可根据实际需求保留或移除。

测试用例验证

  • 输入:(Example)Code "or" [Example]Code
    输出:(Example) Code ''or'' [Example] Code
  • 输入:|Example|Code
    输出:- Example - Code

通用性说明

该方案完全独立于"TEXT:"行的解析逻辑,只需调用process_text()函数即可处理任意文本,适用于文件重命名、文本格式化等多种场景。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:30:41