【问题标题】:Python test string in list of string format字符串格式列表中的 Python 测试字符串
【发布时间】:2016-03-22 07:34:31
【问题描述】:

我正在寻找一个有助于测试字符串是否在格式化字符串列表中的 python 模块。我找不到确切的词来解释我的问题(这可能是我什么都没找到的原因)所以这里有一个例子:

REGISTERED_KEYS = (
    'super_key',
    'key_ending_with_anything_*',
    'anything'
)

is_key_registered("super_key", REGISTERED_KEYS)
>> True

is_key_registered("wrong_key", REGISTERED_KEYS)
>> False

is_key_registered("key_ending_with_anything_foobar", REGISTERED_KEYS)
>> True

这不是简单地检查字符串是否在列表中,而是允许字符串格式化。我可能不得不使用正则表达式,但我想知道是否有一个现有的模块可以做到这一点(因为它似乎是一种常见的需求)。 编辑:我的 REGISTERED_KEYS 的格式对我来说不需要我写的那种。可以是正则表达式。

谢谢

【问题讨论】:

  • 这是正则表达式的确切用例,所以您需要的唯一模块是re
  • @lejlot: 'key_ending_with_anything_*' 不是正则表达式
  • 它是一个正则表达式,不管你使用什么样的语法,*或典型的正则表达式。

标签: python regex string list


【解决方案1】:

如果您想使用文件通配符,请使用适当的库来匹配文件名:fnmatch

import fnmatch

def is_key_registered(foo, keys):
    return any(fnmatch.fnmatch(foo, key) for key in keys)

【讨论】:

    【解决方案2】:

    您可以浏览所有键并检查它们:

    import re
    
    
    def is_key_registered(key, keys):
        for _ in keys:
            if re.search(_, key):
                return True
    

    【讨论】:

      猜你喜欢
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多