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

如何从Excel字符串提取前5字符属指定列表、后3为数字的10字符单词?

解决方案

要实现从Excel的Description列提取符合要求的10字符单词,你可以通过构造精准的正则表达式,结合Pandas的批量字符串处理功能来完成,以下是修正后的代码:

import pandas as pd
import re

# 读取Excel文件
df = pd.read_excel(r'D:/Users/Data.xlsx')

# 定义目标前缀列表
prefix_list = ['AQBCN','PUCNQ','DJBNK','ADJBC','NJRQC']

# 构造正则表达式:匹配前5字符为指定前缀、中间2任意字符、最后3数字的10字符内容
prefix_pattern = '|'.join(prefix_list)
regex_pattern = fr'({prefix_pattern}).{{2}}\d{{3}}'

# 提取匹配内容到Number列,无匹配则留空
df['Number'] = df['Description'].str.extract(regex_pattern, expand=False)

# 可选:保存处理后的结果到新Excel
# df.to_excel(r'D:/Users/Processed_Data.xlsx', index=False)

print(df)

代码说明:

  • 正则表达式构造:
    • prefix_pattern 将前缀列表转为AQBCN|PUCNQ|DJBNK|ADJBC|NJRQC,用于匹配前5个符合要求的字符;
    • .{2} 匹配中间任意2个字符(保证总长度为10:5+2+3);
    • \d{3} 匹配最后3个数字;
    • 整个表达式用括号包裹,确保str.extract能提取到完整的目标字符串。
  • Pandas批量处理:使用str.extract直接对整个Description列操作,比循环遍历效率更高,无匹配的行自动填充NaN(显示为空),符合预期输出。

原代码的问题:

  1. 正则表达式[ae]\w+完全不符合需求,它只会匹配以a或e开头的单词,和你要提取的10字符目标毫无关系;
  2. 循环遍历每一行但没有将提取结果赋值到Number列,无法得到预期输出;
  3. 使用list作为变量名会覆盖内置的list类型,属于不良编码习惯。

内容的提问来源于stack exchange,提问作者Manz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:50:25