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

如何在pandas列中匹配指定字符串并返回其后跟随的内容?

批量提取推特简介中Ins账号的实现方案

针对简介中格式不统一的关键词匹配场景,正则匹配是适配性最高的方案,可以覆盖带不同分隔符、不同关键词变体的内容,不需要逐行写分支判断。

匹配规则设计

结合提供的样本数据,需要覆盖的匹配场景包括:

  • 关键词变体:insta:、instagram:、ig://
  • 关键词与账号间的分隔符:冒号、横杠、斜杠、空格
  • 账号前缀:可选的@符号

最终用非捕获组匹配触发关键词、灵活适配分隔符,通过捕获组抓取符合Ins账号规则的内容,避免提取到后续的无关文本。

完整代码实现

import pandas as pd
import re

# 构造和样本一致的测试DataFrame
bio_df = pd.DataFrame({
    "tweet_bio": [
        'lad who loves to cook 🥘 • insta: xxx',
        'founder and head chef | insta: xxx |',
        '🇬🇧 |bakery instagram - xxx',
        'insta: @xxx for enquiries',
        'self taught baker. ig:// xxxx 🍥🧆'
    ]
})

# 定义提取正则
# 正则说明:
# (?:insta|instagram|ig):非捕获组匹配所有Ins相关的触发关键词,不纳入提取结果
# \s*[:\/-]?\s*:匹配关键词后任意空格、冒号、斜杠、横杠分隔符
# @?:匹配账号前可选的@符号,不纳入提取结果
# ([A-Za-z0-9_.]+):捕获组匹配符合Ins账号规则的连续字符(字母、数字、下划线、点)
extract_pattern = r'(?:insta|instagram|ig)\s*[:\/-]?\s*@?([A-Za-z0-9_.]+)'

# 批量执行提取,IGNORECASE参数适配大小写混写的场景,比如INSTA:、Instagram:
bio_df["extracted_ins"] = bio_df["tweet_bio"].str.extract(extract_pattern, flags=re.IGNORECASE)

效果说明

针对提供的5条测试样本,最终提取结果为:

  • 第1行:xxx
  • 第2行:xxx
  • 第3行:xxx
  • 第4行:xxx(自动跳过前缀的@符号)
  • 第5行:xxxx

可自定义调整项

  • 如果需要保留账号前的@符号,只需将捕获组调整为(@?[A-Za-z0-9_.]+)即可
  • 如果后续碰到新的分隔符(比如关键词后面跟竖线|),只需将对应符号加入正则的分隔符匹配组[:\/-]中
  • 对于完全没有匹配到的行,提取结果会自动返回空值,不会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 21:06:07