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

Python字符串比较不符合预期:通配符匹配失效问题求助

问题原因分析

Python中的==运算符是严格的字面字符串匹配,它不会识别你写的*、[1-7]这类通配符语法。当你执行"LC08_L1TP_215068_20151114_20170402_01_T1_B1" == "LC08*_B[1-7]"时,Python只是在对比两个字符串的每一个字符是否完全一致——右边的*和[1-7]会被当作普通字符处理,自然和左边的具体文件名不匹配,所以返回False。

两种解决方法

方法1:使用fnmatch模块(推荐用于简单通配符场景)

Python标准库中的fnmatch模块专门用来处理类shell的通配符匹配,完全符合你的需求:

import fnmatch

filename = "LC08_L1TP_215068_20151114_20170402_01_T1_B1"
pattern = "LC08*_B[1-7]"

# 检查文件名是否匹配通配符模式
is_match = fnmatch.fnmatch(filename, pattern)
print(is_match)  # 输出: True

fnmatch支持的通配符规则:

  • *:匹配任意长度的任意字符(包括空字符)
  • [1-7]:匹配1到7之间的单个字符
  • ?:匹配单个任意字符

方法2:使用正则表达式(适合复杂匹配场景)

如果你的匹配需求更复杂,也可以用Python的re正则模块,注意要把通配符转换成对应的正则语法:

import re

filename = "LC08_L1TP_215068_20151114_20170402_01_T1_B1"
# 正则中用.*代替通配符的*,[1-7]的含义和通配符一致
pattern = r"LC08.*_B[1-7]"

# fullmatch检查整个字符串是否完全匹配模式
is_match = re.fullmatch(pattern, filename) is not None
print(is_match)  # 输出: True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:33:15