如何使用正则表达式基于‘Script or expected file(s)’列删除符合条件的行?
嘿,我来帮你搞定这个行删除的需求!我们可以结合正则表达式和常用的表格处理工具,精准筛选出需要删除的行并完成操作。下面是具体的实现方案:
解决方案:基于正则筛选并删除指定行
第一步:明确删除规则与对应的正则表达式
你的需求是删除满足以下任一条件的行:
- 「Script or expected file(s)」列的值为空(包括NaN、空字符串)
- 列值包含指定扩展名:
.txt_go、.zip、.prd、.xml、.go、.csv、.txt、.xlsx - 列值包含以
_00开头的子串(比如file_001.txt、_00test这类)
针对后两个条件,我们可以写出这样的正则表达式:
(?:\.txt_go|\.zip|\.prd|\.xml|\.go|\.csv|\.txt|\.xlsx)|_00.*
(?:...)是非捕获组,把所有扩展名放在一起做“或”判断|表示“或者”,分隔扩展名匹配规则和_00.*规则_00.*会匹配任何包含_00且后面跟任意内容的字符串
如果你希望扩展名是作为文件名后缀(即字符串以这些扩展名结尾),可以给正则加上$(表示字符串结尾),避免误匹配到包含这些子串但不是扩展名的内容:
(?:\.txt_go|\.zip|\.prd|\.xml|\.go|\.csv|\.txt|\.xlsx)$|_00.*
第二步:用Python Pandas实现具体操作
Pandas是处理表格数据的常用工具,我们可以用它来快速完成筛选和删除:
import pandas as pd # 读取你的数据(这里假设是CSV文件,也可以是Excel等其他格式) df = pd.read_csv("your_input_file.csv") # 定义删除条件:空值 或者 匹配正则 delete_mask = ( df["Script or expected file(s)"].isna() # 匹配NaN | df["Script or expected file(s)"].str.strip().eq("") # 匹配空字符串(去除前后空格后) | df["Script or expected file(s)"].str.contains( r'(?:\.txt_go|\.zip|\.prd|\.xml|\.go|\.csv|\.txt|\.xlsx)|_00.*', na=False # NaN值不参与正则匹配,返回False ) ) # 保留不符合删除条件的行 filtered_df = df[~delete_mask] # 保存处理后的结果(可选) filtered_df.to_csv("your_output_file.csv", index=False)
其他工具的适配方案
如果你用的是SQL、Excel VBA这类工具,核心逻辑是一样的:
- 先判断空值
- 再用正则匹配符合条件的字符串
- 删除匹配到的行
比如MySQL中的SQL语句示例:
DELETE FROM your_table WHERE `Script or expected file(s)` IS NULL OR `Script or expected file(s)` = '' OR `Script or expected file(s)` REGEXP '(\\.txt_go|\\.zip|\\.prd|\\.xml|\\.go|\\.csv|\\.txt|\\.xlsx)|_00.*';
注意:SQL中需要把.转义为\\.,不同数据库的正则语法可能有细微差别,需要根据实际情况调整。
内容的提问来源于stack exchange,提问作者user16117306
相关产品推荐
相关产品推荐

