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

Python如何基于非字符串起始位置的'2022'模式分割提取前缀数字

问题原因

原写法直接用split("2022")切割,默认会以第一个匹配到的"2022"子串为分割点,没有判断这个匹配子串是否在去空白后的字符串起始位置,所以当去空白后字符串开头就是"2022"时,切割后的首段是空字符串,拿不到预期结果。

实现方案

用字符串自带的find()方法即可实现需求,该方法支持指定查找的起始位置,逻辑如下:

  1. 先对原字符串做首尾去空白处理
  2. 查找第一个"2022"的匹配位置,如果位置不是0(即不在字符串开头),直接取该位置前的内容
  3. 如果第一个匹配位置是0(开头就是2022),就从索引1的位置开始往后找下一个"2022"匹配项,取这个匹配项前的内容

参考代码:

s = mystring.strip()
# 查找第一个2022的位置
pos = s.find("2022")
# 若第一个2022在字符串开头,从索引1开始向后查找下一个匹配项
if pos == 0:
    pos = s.find("2022", 1)

# 找到符合要求的2022则取前面的内容,未找到可按业务需求自定义返回值,这里默认返回空
a = s[:pos] if pos != -1 else ""
效果验证
  • 测试用例1:mystring=' 1020220519AX'
    去空白后为'1020220519AX',第一个2022匹配位置是2(非0),取前2位返回'10',符合预期。
  • 测试用例2:mystring=' 20220220519AX'
    去空白后为'20220220519AX',第一个2022匹配位置是0(开头),从位置1开始查找得到下一个匹配位置是3,取前3位返回'202',符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:18:19