Python按下划线分割file_name生成指定格式变量的技术需求
解决方案
针对你需要从File_name列中提取三个数字段的需求,这里提供两种实用的Python(Pandas)实现方法:
方法一:正则表达式提取(推荐)
正则表达式能精准匹配固定格式的文件名,一步到位提取目标字段:
import pandas as pd # 构造示例数据框 df = pd.DataFrame({ 'file_path': ['/Users/user/Dropbox/SEC investigat...', '/Users/user/Dropbox/SEC investigat...'], 'File_name': ['_0000886982_18795_2687.txt', '_0000072333_16855_805.txt'] }) # 用正则捕获三个数字段:10位、任意长度(可补零到6位)、1-4位 df[['var1', 'var2', 'var3']] = df['File_name'].str.extract(r'_(\d{10})_(\d+)_(\d{1,4})\.txt') # 若需要强制var2为6位(补前导零),执行这行 df['var2'] = df['var2'].str.zfill(6)
运行后数据框会新增var1、var2、var3三列,分别对应你需要的三个变量。
方法二:分割字符串后处理
如果文件名格式有轻微变动,分割法更灵活:
# 先移除.txt后缀,再按下划线分割 split_cols = df['File_name'].str.rstrip('.txt').str.split('_', expand=True) # 提取分割后的有效字段(跳过开头的空字符串) df['var1'] = split_cols[1] df['var2'] = split_cols[2].str.zfill(6) # 补零到6位 df['var3'] = split_cols[3]
说明
var1直接取分割后的第2个元素(索引1),刚好是10位数字;str.zfill(6)用于将var2补至6位(比如示例中的18795会变成018795),如果不需要补零可去掉这一步;var3取分割后的第4个元素(索引3),自动匹配1-4位的数字长度。
内容的提问来源于stack exchange,提问作者user19745533
相关产品推荐
相关产品推荐

