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

如何用Python正则表达式提取图片路径中的品牌名称?

看起来你的正则表达式写得有点问题,导致只抓到了单个字符“L”,我来帮你修正一下!

问题出在哪?

先拆解你用的正则 r’([\w\s.-]).[jpg]’:

  • ([\w\s.-]) 这个分组只匹配单个字符(因为没加+或*这类量词表示匹配多次),所以只能捕获一个字符;
  • .[jpg] 这里的.是正则元字符,会匹配任意单个字符;[jpg]是字符集,只匹配j/p/g中的一个;
  • 整个正则会在路径里找第一个符合「单个字符 + 任意字符 + j/p/g」的片段,结果刚好抓到了路径里Logo中的L,所以才输出['L']。

另外,要匹配实际的.jpg扩展名,得把.转义成\.,不然它会匹配任意字符。

正确的解决方法

方法1:利用Path对象的属性简化处理

Python的PosixPath自带提取文件名的方法,先拿到不带扩展名的文件名,再提取前面的品牌名(假设品牌名都是纯字母,后面跟数字):

import re
from pathlib import Path

# 你的600个路径列表
image_paths = [Path('/content/drive/My Drive/Logo/adidas10.jpg'), 
               Path('/content/drive/My Drive/Logo/adidas11.jpg'),
               # ... 其他路径
               ]

brands = []
for path in image_paths:
    # 提取不带扩展名的文件名,比如'adidas10'
    filename_stem = path.stem
    # 匹配开头的纯字母部分(品牌名)
    match_result = re.match(r'^([A-Za-z]+)', filename_stem)
    if match_result:
        brands.append(match_result.group(1))

# 去重得到最终分类标签
unique_brand_labels = list(set(brands))
print(unique_brand_labels)

方法2:直接对路径字符串用精准正则匹配

如果想直接处理路径字符串,可以写一个匹配最后一个目录分隔符后、数字和.jpg之前品牌名的正则:

import re
from pathlib import Path

image_paths = [Path('/content/drive/My Drive/Logo/adidas10.jpg'), 
               Path('/content/drive/My Drive/Logo/adidas11.jpg'),
               # ... 其他路径
               ]

# 正则解释:匹配最后一个/后,纯字母品牌名 + 数字 + .jpg结尾
pattern = r'/([A-Za-z]+)\d+\.jpg$'
brands = []
for path in image_paths:
    match_result = re.search(pattern, str(path))
    if match_result:
        brands.append(match_result.group(1))

unique_brand_labels = list(set(brands))
print(unique_brand_labels)

这两种方法都能准确提取出adidas这类品牌名,作为你的分类任务标签~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:56:55