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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:27:28