如何移除指定下划线后的字符?Python代码匹配异常求助
解决方法:精准匹配数字后的下划线进行截断
原代码的问题在于直接查找第一个下划线,导致误匹配了photo_id里的下划线,进而错误截断内容。要实现只移除数字后面的下划线及后续子串,用正则表达式来精准匹配是最可靠的方式。
修正后的代码
import re # 用with语句自动管理文件,避免资源泄漏 with open("text.txt", "r") as inputFile, open("result.txt", "w") as exportFile: for line in inputFile: # 正则匹配:捕获数字组,替换掉数字后的下划线及后续字母数字串 new_line = re.sub(r'(\d+)_[\w]+', r'\1', line) exportFile.write(new_line)
代码说明
re.sub(r'(\d+)_[\w]+', r'\1', line):(\d+):捕获连续的数字部分,作为后续替换保留的内容_[\w]+:匹配数字后面的下划线,以及下划线之后的所有字母数字字符- 替换为
\1,也就是之前捕获的数字部分,这样就完成了移除目标下划线及后续子串的需求
- 使用
with语句处理文件,无需手动调用close(),更安全规范
测试你的示例输入:
photo_id 102297_skdjksd223238 text black dog in a water
处理后会输出:
photo_id 102297 text black dog in a water
完全符合需求。
内容的提问来源于stack exchange,提问作者user20133451
相关产品推荐
相关产品推荐

