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

如何在Python中定位字符串中'x'的出现位置(含连续范围)

获取字符串中"x"的连续位位置

你的脚本存在两个关键问题,导致输出不符合预期:

  1. 碰到非"x"字符时,仅处理长度大于1的temparray,单个"x"的位置直接被遗漏
  2. 循环结束后,temparray中剩余的未处理"x"位置(比如字符串末尾的单个"x")没有被加入结果列表

下面是修复后的代码:

string1 = '0100xx11xxx0x1'
temparray = []
trackarray = []

i = 0
for char in string1:
    if char == "x":
        temparray.append(i)
    else:
        if temparray:
            # 根据x的数量决定添加范围还是单个位置
            if len(temparray) > 1:
                trackarray.append((temparray[0], temparray[-1]))
            else:
                trackarray.append((temparray[0],))  # 单元素元组,保持格式统一
            temparray = []
    i += 1  # 统一在循环末尾递增索引,避免重复代码

# 处理循环结束后剩下的x(比如字符串最后一段x)
if temparray:
    if len(temparray) > 1:
        trackarray.append((temparray[0], temparray[-1]))
    else:
        trackarray.append((temparray[0],))

print(trackarray)

运行后输出为 [(4, 5), (8, 10), (12,)]。如果你想要完全匹配预期的(12)(不带逗号),可以把单元素的处理改成trackarray.append(temparray[0]),输出会变为[(4, 5), (8, 10), 12],不过用元组的格式会更统一。

核心修复说明

  • 将索引递增逻辑移到循环末尾,减少代码冗余
  • 只要temparray不为空,碰到非"x"就处理,覆盖单个和多个x的情况
  • 循环结束后必须检查temparray,避免遗漏字符串末尾的x序列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:05:22