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

Python中如何根据反斜杠提取列表字符串的前缀部分

问题描述

我有一个Python文件名列表(实际更长):

filenames = ['BETON\\map (120).png',
 'BETON\\map (125).png',
 'BETON\\map (134).png',
 'BETON\\map (137).png',
 'TUILES\\map (885).png',
 'TUILES\\map (892).png',
 'TUILES\\map (924).png',
 'TUILES\\map (936).png',
 'TUILES\\map (954).png',
 'TUILES\\map (957).png',
 'TUILES\\map (97).png',
 'TUILES\\map (974).png',
 'TUILES\\map (987).png']

想要提取每个文件名中反斜杠\之前的部分作为文件类型,得到如下结果:

result = ['BETON',
     'BETON',
     'BETON',
     'BETON',
     'TUILES',
     'TUILES',
     'TUILES',
     'TUILES',
     'TUILES',
     'TUILES',
     'TUILES',
     'TUILES',
     'TUILES']

之前用截取前5个字符的方法实现,但随着文件类型增多且长度不一,这个方法不再适用,想知道怎么根据反斜杠提取对应内容。

解决方案

方法1:字符串split()方法

直接按反斜杠分割字符串,取第一个元素即可。注意Python中反斜杠是转义字符,所以要写成'\\'作为分隔符:

def Extract(files):
    return [item.split('\\')[0] for item in files]

# 调用示例
files2 = Extract(filenames)

这种方法简单直接,适合路径格式固定(每个路径只有一个反斜杠)的场景。

方法2:使用os.path模块(推荐)

处理文件路径最好用Python内置的os.path模块,它能自动适配不同操作系统的路径分隔符(Windows的\、类Unix的/),兼容性更强:

import os

def Extract(files):
    # 方法A:用split拆分路径
    return [os.path.split(item)[0] for item in files]

# 或者用dirname直接获取目录部分
# def Extract(files):
#     return [os.path.dirname(item) for item in files]

os.path.split()会返回一个元组,第一个元素是路径的目录部分(也就是反斜杠前的内容);os.path.dirname()则直接返回路径的目录部分,两种方式效果一致。

方法3:正则表达式(复杂场景适用)

如果遇到更复杂的路径格式(比如多个反斜杠但只需要第一个前面的内容),可以用正则表达式精准匹配:

import re

def Extract(files):
    # 匹配开头到第一个反斜杠的内容
    pattern = re.compile(r'^([^\\]+)\\')
    return [pattern.match(item).group(1) for item in files]

正则表达式^([^\\]+)\\的意思是:从字符串开头开始,匹配所有不是反斜杠的字符,直到遇到第一个反斜杠为止,捕获这部分内容作为结果。

内容的提问来源于stack exchange,提问作者Julie-Anne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:45:47