python - 查找字符串中所有出现带有通配符的子字符串

标签 python string glob

我正在尝试编写一个函数来返回较长字符串中包含通配符(每个通配符仅占一个字符)的子字符串的所有匹配项。 例如,假设我有主题字符串: aabcddcabaabedcbabaa,我的查询字符串是 b?d??ab。 预期输出为: ['bcddcab', 'bedcbab']

查看其他堆栈溢出帖子,我尝试了以下操作:

import fnmatch
subject = "aabcddcabaabedcbabaa"
query = "b?d??ab"
res = fnmatch.filter(subject, query)

但这会返回一个空列表。我究竟做错了什么?我实际上正确使用了fnmatchfilter功能吗?预先感谢您

最佳答案

  • 查询应该是过滤器的第二个参数,而不是第一个
  • filter 通过保留与查询匹配的字符串来过滤字符串列表。 filter 返回字符串的子字符串列表。如果你想用filter过滤子字符串,你首先需要构建子字符串列表:
import fnmatch
subject = "aabcddcabaabedcbabaa"
query = "b?d??ab"
substrings = fnmatch.filter((subject[i:i+len(query)] for i in range(len(subject) - len(query))), query)
print(substrings)

输出:['bcddcab', 'bedcbab']

关于python - 查找字符串中所有出现带有通配符的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63847612/

相关文章:

python - paramiko:打开和返回 sftp 连接的方法

python - 如何避免使用 super() 进行无限递归?

python - 无法使用 python 2.7 错误 1045 连接到 mySql

sql - 从字符串中删除最终的 "OR"

mysql - 检查 MySQL 中的子字符串并返回基于它的值

perl - 我可以在 glob 运算符中使用 Perl 常量吗?

python - 使用 Azure 数据工厂从 REST API 获取数据

python - 在数据框python的每一行中按字母顺序对单词进行排序

php - 使用PHP从文件夹中删除所有文件?

python - 使用 Python 将 DLY 文件转换为 CSV