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

Python字符串.find()函数判断逻辑异常问题求助

问题原因解析

1. str.find()的返回值规则

Python中字符串的find()方法返回逻辑是:

  • 找到目标子串时,返回子串第一个字符的索引位置(非负整数,比如0、1、2...)
  • 找不到目标子串时,返回**-1**

它不会返回布尔值True或False,这是你逻辑出错的核心。

2. 第一个条件sales为空的原因

你写的判断条件:

if transactions_clean[i].find('$') == True:

在Python中,布尔值True等价于整数1,所以这个条件只有当$恰好出现在字符串的索引1位置时才会成立。而你的数据里带$的字符串,$大概率不在索引1的位置(比如常见的开头位置,索引0),所以条件几乎都不满足,sales自然为空。

3. 第二个条件反而得到所有带$字符串的原因

你修改后的条件:

if transactions_clean[i].find('$') == False:

布尔值False等价于整数0,结合你的数据情况,应该是所有带$的字符串中,$都位于索引0的位置(比如格式为$XX.XX),此时find('$')返回0,和False(数值0)相等,条件成立,这些字符串被添加到sales;而不带$的字符串会返回-1,和0不相等,不会被添加,所以最终sales包含了所有带$的内容。

正确的写法

如果要筛选包含$的字符串,推荐两种更直观的写法:

  • 用in运算符(最简洁):
    if '$' in transactions_clean[i]:
        sales.append(transactions_clean[i])
    
  • 用find()判断是否不等于-1:
    if transactions_clean[i].find('$') != -1:
        sales.append(transactions_clean[i])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:18:17