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

Python字符串包含检查错误排查及替代方法咨询

字符串包含检查的正确实现方法

你当前代码的问题是搞反了in运算符的判断方向:

  • STRING in ['tudo','ta','esta']是判断整个STRING是否是列表中的某一项,而非STRING包含列表里的任意单词;
  • STRING in '?'是判断整个STRING是否等于'?',而非STRING包含问号字符。

以下是几种正确实现字符串包含检查的方法:

1. 修正in运算符的用法

将判断逻辑反转,用子串/字符 in STRING检查单个内容;对于多个候选子串,用any()函数遍历判断:

STRING = "some string ?"

# 检查是否包含列表中任意单词
print('the STRING contains [tudo, ta OU esta] ?')
print(any(word in STRING for word in ['tudo','ta','esta']))

print('\n the STRING contains [bem OU bom] ?')
print(any(word in STRING for word in ['bem','bom']))

print('\n the STRING contains "?" ?')
print('?' in STRING)

2. 使用str.find()方法

str.find(sub)返回子串在字符串中的起始索引,找不到则返回-1,通过判断返回值是否不为-1实现检查:

# 检查单个问号
print('?' in STRING)  # 等价于下面的写法
print(STRING.find('?') != -1)

# 封装函数检查多个候选子串
def contains_any(target_str, substr_list):
    for substr in substr_list:
        if target_str.find(substr) != -1:
            return True
    return False

print(contains_any(STRING, ['tudo','ta','esta']))

3. 正则表达式(适用于复杂匹配场景)

如果需要更灵活的匹配规则(比如忽略大小写、匹配完整单词等),可以使用re模块:

import re

# 检查是否包含列表中任意单词
match_pattern = re.compile(r'tudo|ta|esta')
print(bool(match_pattern.search(STRING)))

# 检查是否包含问号
print(bool(re.search(r'\?', STRING)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:05:23