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

Python 3.10从URL字符串提取斜杠间数值及关联行ID

解决方法

步骤1:编写匹配前缀与目标数值的正则表达式

需要精准匹配两类核心内容:

  • 前缀:以Domain开头、以Id结尾的字符串(如DomainId、DomainSiteId,兼容输入中可能的拼写变体)
  • 数值:前缀后斜杠之间的5-9位数字

对应的正则表达式:(Domain\w*Id)/(\d{5,9})

  • (Domain\w*Id):捕获前缀部分,\w*匹配中间任意字母数字,适配不同前缀写法
  • (\d{5,9}):严格捕获5-9位的目标数值

步骤2:提取数据并重塑表格

利用pandas的字符串提取工具获取匹配结果,再通过透视表将长格式数据转为期望的宽格式,最后关联原表的id列。

完整代码示例

import pandas as pd

# 示例数据
data = {
    "id": [1, 2, 3],
    "url": [
        "https://company.db.abcd.com/DomainId/123456789/Other",
        "https://company.db.abcd.com/DomainSiteId/123456/Other",
        "https://companyaddedwords.db.abcd.com/DomainId/1234567/Other"
    ]
}
df = pd.DataFrame(data)

# 提取前缀和对应数值
extracted = df.url.str.extract(r'(Domain\w*Id)/(\d{5,9})', expand=True)
extracted.columns = ["prefix", "value"]
extracted["id"] = df["id"]

# 转换为宽表格式
result = extracted.pivot(index="id", columns="prefix", values="value").reset_index()

# 修正列名(适配输入中可能的拼写错误)
result = result.rename(columns={"DomainainSiteId": "DomainSiteId"})

print(result)

输出结果

id    DomainId DomainSiteId
0   1  123456789          NaN
1   2         NaN       123456
2   3   1234567          NaN

补充说明

  • 如果原数据中确实存在DomainainSiteId这类特殊前缀,正则会自动匹配,只需在rename中对应调整列名即可
  • 若单个URL可能包含多个匹配项,替换为str.extractall后再做分组处理即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:42:40