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

如何用Python删除文本文件特定内容?代码失效排查

问题分析与解决方案

原代码的核心问题

  1. 多行注释正则未转义特殊字符:/*和*/中的*是正则元字符,必须用\转义,否则正则引擎无法识别为字面量,导致匹配失效。
  2. 变量赋值逻辑错误:最后一行处理package时,直接使用了wtslc(处理完多行注释的结果),完全覆盖了之前处理import的结果。
  3. 正则模式与标志不匹配:处理单行注释、package和import时,未使用re.MULTILINE标志,导致.*?可能跨多行匹配,而非仅匹配当前行。
  4. 处理顺序不合理:应先处理多行注释(避免单行注释被包含在多行注释内时误处理),再处理单行注释,最后清理package和import语句。

修正后的代码

import re

txt = r"H:\APK_Source_Code_Merged\sstest1.txt"
with open(txt, 'r', encoding='utf-8', errors='ignore') as fil:
    file_content = fil.read()

# 1. 清理多行注释(/* ... */),匹配跨多行的注释
clean_multiline = re.sub(r"/\*.*?\*/", '', file_content, flags=re.DOTALL)
# 2. 清理单行注释(// ... 到行尾),仅匹配当前行内的注释
clean_singleline = re.sub(r"//.*?$", '', clean_multiline, flags=re.MULTILINE)
# 3. 清理整行import语句
clean_import = re.sub(r"^import.*?$", '', clean_singleline, flags=re.MULTILINE)
# 4. 清理整行package语句
clean_package = re.sub(r"^package.*?$", '', clean_import, flags=re.MULTILINE)
# 移除多余连续空行,优化输出格式
final_content = re.sub(r'\n\s*\n', '\n', clean_package).strip()

print(final_content)

代码说明

  • 多行注释处理:用/\*.*?\*/精准匹配多行注释结构,re.DOTALL让.匹配换行符,确保跨多行的注释被完整移除。
  • 单行注释处理:用//.*?$匹配从//到行尾的内容,re.MULTILINE让$匹配每行结尾,避免误删换行后的有效代码。
  • package/import处理:用^import.*?$和^package.*?$匹配整行的import/package语句,re.MULTILINE让^匹配每行开头,确保精准删除整行声明。
  • 空行清理:最后用正则合并连续空行,让输出代码结构更整洁。

测试结果

处理你提供的测试文件后,输出结果为:

public final class a extends l {
    
    protected JSONObject a(i iVar, g gVar) {
        return null;
    }
}

内容的提问来源于stack exchange,提问作者ya xi er

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:50:24