如何移除字符串中括号及其内部的所有字符
如何移除文本中括号及其内部的所有内容?
需求场景
输入文本内容:
"00:00:25,58 --> 00:00:27,91 (DRAMATIC MUSIC PLAYING)"
期望输出:
"00:00:25,58 --> 00:00:27,91 "
尝试过的无效代码
eng_sub = open(text).read() eng_sub2 = re.sub("\(", "", eng_sub) new_eng_sub = re.sub("\)", "", eng_sub2) open(text, "w").write(new_eng_sub)
这段代码仅能移除括号本身,无法清除括号内的内容。
解决方案
使用正则表达式匹配括号及其中的所有内容,一次性替换为空字符串即可。核心正则模式为\(.*?\):
\(:匹配左括号(转义是因为括号在正则中属于特殊语法字符).*?:非贪婪匹配任意字符(避免遇到多个括号时,错误匹配跨括号的内容)\):匹配右括号
优化后的代码(建议用with语句管理文件,避免资源泄漏):
import re # 替换text为你的实际文件路径 with open(text, 'r', encoding='utf-8') as f: eng_sub = f.read() # 执行替换操作 new_eng_sub = re.sub(r"\(.*?\)", "", eng_sub) with open(text, 'w', encoding='utf-8') as f: f.write(new_eng_sub)
补充说明
如果你的文本存在嵌套括号(例如(abc(def))),上述非贪婪模式无法完全匹配,此时需要使用递归正则或更复杂的匹配规则,但针对字幕文件这类场景,\(.*?\)已经足够满足需求。
内容的提问来源于stack exchange,提问作者me-an-ape
相关产品推荐
相关产品推荐

