Python:按指定模式分割字符串并提取目标内容
解决方案
从你的示例来看,需要提取的是日期前缀(YYYY_MM_DD_)和末尾固定标识(_Vendor/_market)之间的内容。下面提供两种可靠的实现方法:
实现代码
方法一:正则表达式精准提取
import re def extract_target(file_name): # 匹配日期前缀后、末尾标识前的核心内容 match_result = re.search(r'^\d{4}_\d{2}_\d{2}_(.*?)(?:_Vendor|_market)$', file_name) return match_result.group(1) if match_result else None # 测试示例用例 test_files = [ "2022_09_21_PTE_Vendor", "2022_09_21_SSS_01_Vendor", "2022_09_21_OOS_market" ] for file in test_files: print(f"{file:<35} {extract_target(file)}")
方法二:字符串分割提取
如果不想用正则,也可以通过拆分字符串实现:
def extract_target_by_split(file_name): # 拆分字符串,跳过前3个日期相关的分段 segments = file_name.split('_')[3:] # 移除末尾的Vendor/market标识,拼接剩余部分 if segments[-1] in ['Vendor', 'market']: return '_'.join(segments[:-1]) return None # 测试示例用例 for file in test_files: print(f"{file:<35} {extract_target_by_split(file)}")
代码说明
- 正则方法:
^\d{4}_\d{2}_\d{2}_(.*?)(?:_Vendor|_market)$规则解析:^\d{4}_\d{2}_\d{2}_匹配开头的固定日期格式前缀(.*?)非贪婪匹配我们需要提取的核心内容(?:_Vendor|_market)$匹配末尾的固定标识,?:表示非捕获组,不会额外提取这部分内容
- 分割方法:先通过
split('_')拆分字符串,跳过前3个日期相关分段,再移除最后一个末尾标识,拼接剩余分段得到目标内容
内容的提问来源于stack exchange,提问作者Amr Mashrah
相关产品推荐
相关产品推荐

