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

Python中使用upper()后find函数始终返回-1的问题求助

解决find()始终返回-1的问题

我尝试编写一个解析程序并使用find函数,但无论搜索什么内容,该函数始终返回-1。相关代码如下:

doc_list = ["The Learn Python Challenge Casino.", "They bought a car", "Casinoville"]
for word in doc_list:
    word.upper()
    word.find("A")

运行输出为:

'THE LEARN PYTHON CHALLENGE CASINO.' -1
'THEY BOUGHT A CAR' -1
'CASINOVILLE' -1

嘿,这个问题其实很常见——核心是你忽略了Python字符串的一个关键特性:字符串是不可变的。

咱们一步步拆解:

  • 当你调用word.upper()时,它并不会直接修改原字符串word,而是生成一个全新的全大写字符串。但你没有把这个新字符串存下来,所以后续的word.find("A")还是在原来的小写/混合大小写字符串里找大写的"A",当然找不到啦!

修正方案

只需要把upper()的结果赋值给一个变量(或者直接覆盖原变量),就能正确查找了:

doc_list = ["The Learn Python Challenge Casino.", "They bought a car", "Casinoville"]
for word in doc_list:
    # 把大写后的字符串存起来
    upper_version = word.upper()
    # 在大写后的字符串里找"A"
    match_index = upper_version.find("A")
    # 打印结果
    print(f"{upper_version} {match_index}")

或者更简洁的写法:

doc_list = ["The Learn Python Challenge Casino.", "They bought a car", "Casinoville"]
for word in doc_list:
    upper_version = word.upper()
    print(f"{upper_version} {upper_version.find('A')}")

修正后的运行结果

这样就能得到正确的索引了:

THE LEARN PYTHON CHALLENGE CASINO. 27
THEY BOUGHT A CAR 10
CASINOVILLE -1

(最后一个字符串CASINOVILLE本身确实没有"A",所以返回-1是正常的哦)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:42:35