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

如何在Python/Pandas中提取CSV单元格文本块中含指定关键词的内容?

解决方法

假设你的目标关键词是Supplier assignment notification(可根据实际需求替换),可以通过以下步骤提取对应时间:

步骤1:拆分文本块为独立子段

每个单元格的文本以--------作为分隔符,先拆分出所有子记录,同时清理空内容和多余换行:

步骤2:匹配关键词并提取对应时间

遍历每个子段,检查内容是否包含目标关键词,若匹配则提取子段第一行的时间字符串,还可转换为Pandas的datetime格式方便后续分析。

完整代码示例

import pandas as pd
import re

# 读取CSV文件
df = pd.read_csv('your_file.csv')

# 替换为你实际需要的目标关键词
TARGET_KEYWORD = "Supplier assignment notification"

def extract_supplier_response_time(text):
    # 拆分文本块并清理无效内容
    segments = [seg.strip() for seg in text.split('--------') if seg.strip()]
    matched_times = []
    for seg in segments:
        # 拆分子段的行,过滤空行
        lines = [line.strip() for line in seg.split('\n') if line.strip()]
        if not lines:
            continue
        # 检查子段是否包含目标关键词
        if TARGET_KEYWORD in '\n'.join(lines):
            # 提取时间部分(去掉末尾的人名后缀,比如"- Jim")
            time_match = re.match(r'^(.*?)\s-\s\w+$', lines[0])
            if time_match:
                time_str = time_match.group(1)
                # 转换为datetime格式,异常时保留原字符串
                try:
                    time_dt = pd.to_datetime(time_str, format='%B %d, %Y %I:%M:%S %p %z')
                    matched_times.append(time_dt)
                except ValueError:
                    matched_times.append(time_str)
    # 返回第一个匹配的时间,需多匹配结果可返回列表
    return matched_times[0] if matched_times else None

# 生成新列存储提取的时间
df['Supplier_Response_Time'] = df['time Line'].apply(extract_supplier_response_time)

# 查看结果
print(df[['time Line', 'Supplier_Response_Time']])

代码说明

  • split('--------'):快速拆分出每个独立的操作记录段。
  • 正则^(.*?)\s-\s\w+$用于剥离时间行末尾的人名后缀,若不需要清理直接取lines[0]即可。
  • pd.to_datetime将字符串时间转为可操作的datetime对象,支持后续排序、筛选等分析操作。
  • 若单个单元格存在多个匹配子段,可修改返回逻辑为返回所有匹配时间的列表。

灵活调整

只需修改TARGET_KEYWORD的值即可适配不同的关键词;若时间格式有变化,可调整pd.to_datetime的format参数,或去掉format让Pandas自动推断格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:31:05