微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决python-在字符串中查找所有带有通配符的子字符串

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

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

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

,但这将返回一个空列表。我究竟做错了什么?我实际上是否正确使用了filter的{​​{1}}函数?预先谢谢你

解决方法

  • 查询应该是filter的第二个参数,而不是第一个
  • 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']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。