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

如何在Pandas DataFrame的URL列中用正则提取汽车品牌

解决Pandas DataFrame中提取完整汽车品牌的正则问题

原正则的问题分析

你当前使用的正则.+([A-Z])\w+(?=[\/])+存在两个核心问题:

  • .+是贪婪匹配模式,会优先消耗掉/used/之后的大部分内容,仅让捕获组([A-Z])拿到单个大写字母
  • \w+仅匹配字母、数字和下划线,无法匹配品牌名称中的横杠(-),导致带横杠的品牌无法完整匹配,同时匹配失败的行会被过滤,最终数据行数大幅减少

正确的正则表达式及用法

针对URL结构(/used/品牌/...),可以用以下两种正则方案提取完整品牌:

方案1:利用正向零宽后行断言

直接定位/used/之后、下一个/之前的所有字符:

df['Brand'] = df['Page'].str.extract(r'(?<=/used/)[^/]+', expand=False)
  • (?<=/used/):确保匹配内容的前导是/used/,但不包含在匹配结果中
  • [^/]+:匹配任意非/的字符,直到遇到下一个/,完美兼容带横杠的品牌名称

方案2:使用捕获组

通过捕获组提取目标内容,适合需要更明确结构匹配的场景:

df['Brand'] = df['Page'].str.extract(r'/used/([^/]+)/', expand=False)
  • ([^/]+):将/used/和下一个/之间的内容作为捕获组,str.extract会自动提取该组的内容

关键注意点

使用str.extract而非其他匹配方法(如str.match),因为str.extract会为所有行返回结果,匹配失败的行填充NaN,不会丢失原有数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:25:22