如何在Python中从文件名提取指定子串(公司名称)
从文件路径提取公司名称并用于文件名拼接
针对你给出的固定格式文件路径,这里提供几种简单直观的方法提取公司名称,适配后续的文件名拼接需求:
方法1:字符串分割法(最直观)
直接通过字符串分割操作提取目标内容,适合路径格式完全固定的场景:
import datetime file_path = 'pdl-skills-data/pdl_raw_data/skills_pdl_data_Visa.csv' # 提取文件名部分(路径最后一段) file_name = file_path.split('/')[-1] # 分割文件名并提取公司名:去掉前缀"skills_pdl_data_"和后缀".csv" Company_Name = file_name.split('_')[3].replace('.csv', '') # 后续文件名拼接及上传代码 final_df.to_csv("original_df_with_clusters.csv") timestamp = datetime.now().strftime('%Y%m%d%H%M') result_path = 'pdl-skills-data/pdl_result_data/' result = f'{result_path}original_df_with_clusters_{Company_Name}_{timestamp}.csv' bucket.upload_file("original_df_with_clusters.csv", result)
方法2:用os.path模块处理(更规范)
借助Python内置的os.path模块处理路径,适配不同操作系统的路径分隔符,代码更健壮:
import os import datetime file_path = 'pdl-skills-data/pdl_raw_data/skills_pdl_data_Visa.csv' # 获取纯文件名(不含路径) file_name = os.path.basename(file_path) # 分离文件名和后缀,得到不带.csv的部分 name_without_ext = os.path.splitext(file_name)[0] # 分割提取公司名 Company_Name = name_without_ext.split('_')[3] # 后续文件名拼接及上传代码 final_df.to_csv("original_df_with_clusters.csv") timestamp = datetime.now().strftime('%Y%m%d%H%M') result_path = 'pdl-skills-data/pdl_result_data/' result = f'{result_path}original_df_with_clusters_{Company_Name}_{timestamp}.csv' bucket.upload_file("original_df_with_clusters.csv", result)
方法3:正则表达式(适配特殊情况)
如果公司名称中包含下划线,前两种方法会失效,此时可以用正则表达式精准匹配:
import re import datetime file_path = 'pdl-skills-data/pdl_raw_data/skills_pdl_data_Visa.csv' # 匹配"skills_pdl_data_"和".csv"之间的所有内容 match_result = re.search(r'skills_pdl_data_(.*)\.csv', file_path) if match_result: Company_Name = match_result.group(1) # 后续文件名拼接及上传代码 final_df.to_csv("original_df_with_clusters.csv") timestamp = datetime.now().strftime('%Y%m%d%H%M') result_path = 'pdl-skills-data/pdl_result_data/' result = f'{result_path}original_df_with_clusters_{Company_Name}_{timestamp}.csv' bucket.upload_file("original_df_with_clusters.csv", result)
内容的提问来源于stack exchange,提问作者Logan27
相关产品推荐
相关产品推荐

