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

Python提取字符串大写字母索引时重复字符返回首位置问题

问题产生原因

问题出在你调用的str.index()方法的默认逻辑上:该方法只会返回指定字符在字符串中第一次匹配到的位置的索引,和你当前遍历到哪个位置没有关系。
你的循环是直接遍历字符串的每个字符,当遍历到第二个大写字母H(位置16)时,执行sentence.index('H')会直接从头开始找,第一个匹配的H在索引0的位置,就直接返回0,完全不会感知到当前遍历到的位置,所以最终最后一个位置输出错误的0,而不是正确的16。

修复方案

最简洁、符合Python编码习惯的写法是用enumerate()函数,它可以在遍历的时候同时返回当前元素的索引和元素本身,不需要额外手动查询位置:

sentence = 'Have a Nice Day Hey'
for idx, char in enumerate(sentence):
    if char.isupper():
        print(idx, char)

运行上述代码会输出正确结果:

0 H
7 N
12 D
16 H

对应的索引序列就是你预期的0 7 12 16。

如果你不想用enumerate,也可以手动维护一个索引计数器实现相同效果,只是写法相对繁琐:

sentence = 'Have a Nice Day Hey'
current_index = 0
for char in sentence:
    if char.isupper():
        print(current_index, char)
    current_index += 1

不推荐为了适配index()方法给它传起始搜索位置的写法,逻辑冗余、遍历效率更低,完全没必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:48:18