基于文件名提取指定子串并新增COMPANY NAME列的技术需求
从文件名提取指定子串并新增至文件列的实现方案
需求明确
处理X公司的待清洗文件时,需完成以下操作:
- 从文件名(示例:
RV_NETWORK_AXN TECHNOLOGY_7737463273272635)中提取位于第二个下划线之后、第三个下划线之前的公司名字串(示例:AXN TECHNOLOGY) - 在文件中新增
COMPANY NAME列,并将提取到的公司名填入该列的所有行
Python(Pandas)实现
这是数据清洗场景下最常用的方案,适用于CSV/Excel等结构化文件:
import pandas as pd import os # 替换为你的实际文件路径 file_path = "RV_NETWORK_AXN TECHNOLOGY_7737463273272635.csv" file_name = os.path.basename(file_path) # 拆分文件名提取公司名:按下划线分割后取索引为2的元素(索引从0开始) split_parts = file_name.split('_') company_name = split_parts[2] # 读取文件(Excel文件请用pd.read_excel) df = pd.read_csv(file_path) # 新增列并填充值 df['COMPANY NAME'] = company_name # 保存处理后的文件(可选择覆盖原文件或指定新路径) df.to_csv(f"processed_{file_name}", index=False)
Shell脚本实现
适合批量处理文件或在服务器环境下操作:
# 替换为你的目标文件名 FILE="RV_NETWORK_AXN TECHNOLOGY_7737463273272635.csv" # 提取公司名:awk按下划线分割后取第3个字段(计数从1开始) COMPANY_NAME=$(echo "$FILE" | awk -F '_' '{print $3}') # 给CSV文件新增列:表头追加字段名,数据行追加公司名 awk -v comp="$COMPANY_NAME" 'BEGIN{OFS=","} NR==1{print $0,"COMPANY NAME"} NR>1{print $0,comp}' "$FILE" > "processed_$FILE"
注意事项
- 若文件名中公司名部分不包含下划线,上述代码可直接生效;如果公司名可能包含下划线,需调整拆分逻辑:用
split('_', 3)分割文件名,取第三部分后再截断到下一个下划线之前(例如split_parts = file_name.split('_', 3); company_name = split_parts[2].split('_')[0]) - 处理Excel文件时,需注意文件格式(.xlsx/.xls)对应的读取/保存方法
内容的提问来源于stack exchange,提问作者DataWorld
相关产品推荐
相关产品推荐

