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

如何使用Python删除CSV文本列中含指定子串的日期等无效内容

问题原因

你原有正则仅匹配/及后续字符,没有覆盖日期开头的月份数字段,所以会残留07这类前缀,同时也没有适配后续的无推荐标识清理逻辑。

正确实现

单字符串测试代码

import re

# 匹配规则:空格+完整日期 + 可选的无推荐说明
pattern = re.compile(r'\s*\d{1,2}/\d{1,2}/\d{4}(?:\s*\(no recommendation\))?')

# 测试用例1
s1 = 'CYP2C19, CYP2D6 07/17/2020'
print(pattern.sub('', s1))  # 输出:CYP2C19, CYP2D6

# 测试用例2
s2 = 'CYP2C9 08/19/2020 (no recommendation)'
print(pattern.sub('', s2))  # 输出:CYP2C9

正则规则说明:

  • \s*:匹配日期前的任意数量空格,避免替换后残留多余空格
  • \d{1,2}/\d{1,2}/\d{4}:匹配月/日/年格式的完整日期
  • (?:\s*\(no recommendation\))?:可选匹配日期后跟着的无推荐说明,?:表示非捕获组,?表示该部分可出现0次或1次

全CSV文件处理(pandas方案,适合快速处理)

如果已经安装pandas,直接调用列级处理即可:

import pandas as pd
import re

pattern = re.compile(r'\s*\d{1,2}/\d{1,2}/\d{4}(?:\s*\(no recommendation\))?')

# 读取CSV
df = pd.read_csv('你的文件路径.csv')

# 替换目标列,把下方"content"改成你实际要处理的列名
df['content'] = df['content'].apply(lambda x: pattern.sub('', str(x)))

# 导出结果
df.to_csv('处理后结果.csv', index=False)

全CSV文件处理(内置csv模块,无需安装第三方依赖)

import csv
import re

pattern = re.compile(r'\s*\d{1,2}/\d{1,2}/\d{4}(?:\s*\(no recommendation\))?')
# 要处理的列的索引,第一列是0,根据实际调整
target_col_index = 2

with open('你的文件路径.csv', 'r', encoding='utf-8') as f_in, open('处理后结果.csv', 'w', encoding='utf-8', newline='') as f_out:
    reader = csv.reader(f_in)
    writer = csv.writer(f_out)
    for row in reader:
        if len(row) > target_col_index:
            row[target_col_index] = pattern.sub('', row[target_col_index])
        writer.writerow(row)

内容的提问来源于stack exchange,提问作者rayoto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 16:36:10