如何在Python中定位字符串中'x'的出现位置(含连续范围)
获取字符串中"x"的连续位位置
你的脚本存在两个关键问题,导致输出不符合预期:
- 碰到非"x"字符时,仅处理长度大于1的
temparray,单个"x"的位置直接被遗漏 - 循环结束后,
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
相关产品推荐
相关产品推荐

