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

如何在长字符串列表中查找子串'ABC'并提取其后4位对应ID字符

你当前代码的错误在于切片的结束下标写为了固定值1+7,而非基于ABC出现的位置动态计算,会导致提取结果不符合预期。

解决方案1:修正字符串切片逻辑

字符串索引从0开始计数,子串ABC占3个字符长度,若ABC的起始下标为i,则其后第一个字符的下标为i+3,取后续4个字符的结束下标为i+3+4 = i+7,修正后的循环代码如下:

cust_id = []
for index, row in df.iterrows():
    desc = row['ERROR_DESC']
    # 先校验是否存在目标子串,避免匹配失败抛出异常
    if 'ABC' not in desc:
        cust_id.append(None)
        continue
    i = desc.index('ABC')
    id_num = desc[i+3:i+7]
    cust_id.append(id_num)

解决方案2:更适配复杂业务场景的正则提取(推荐)

你提到实际业务中前缀不固定、还需要提取其他子串,用Pandas内置的正则提取方法性能更高、代码更简洁,无需手动循环遍历:

# 匹配ABC后的4个任意字符,直接生成CUSTOMER_ID列
df['CUSTOMER_ID'] = df['ERROR_DESC'].str.extract(r'ABC(.{4})')
# 若需要去除ID前后的空格,只保留纯数字,可补充以下行
df['CUSTOMER_ID'] = df['CUSTOMER_ID'].str.strip()

如果需要同时提取多个前缀的ID,只需要调整正则规则即可,比如匹配ABC或者DEF前缀可以写为r'(?:ABC|DEF)(.{4})'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:06:06