优化代码:实现字母与符号间加空格并排除括号内内容及无效字符处理
解决方案
完整代码
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
关键部分解释
无效字符替换
使用str.maketrans创建字符转换表,批量替换无效字符,比循环替换效率更高,规则可灵活修改。括号外的空格添加逻辑
两个正则表达式通过负向断言确保只修改括号外的内容:(?![^()]*\)):断言当前位置后面没有未闭合的圆括号(即不在圆括号内)(?![^\[\]]*\]):断言当前位置后面没有未闭合的方括号(即不在方括号内)
匹配目标为非单词、非空格、非括号的符号,分别处理符号在字母前/后的情况,添加空格分隔。
可选的多余空格清理
最后添加连续空格合并逻辑,避免多次替换后出现冗余空格,可根据实际需求保留或移除。
测试用例验证
- 输入:
(Example)Code "or" [Example]Code
输出:(Example) Code ''or'' [Example] Code - 输入:
|Example|Code
输出:- Example - Code
通用性说明
该方案完全独立于"TEXT:"行的解析逻辑,只需调用process_text()函数即可处理任意文本,适用于文件重命名、文本格式化等多种场景。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

