2015-12-16 197 views
2

我正在尋找一個python模塊,它可以幫助測試一個字符串是否在格式化字符串列表中。我無法找到確切的詞來解釋我的問題(這可能就是我沒有發現任何東西),所以這裏有一個例子:在字符串格式列表中的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的格式不一定是我寫的。可以是正則表達式。

感謝

+1

這是正則表達式的確切用例,所以你需要的唯一模塊是're' – lejlot

+0

@lejlot:''key_ending_with_anything _ *''不是正則表達式 – eumiro

+0

它是一個正則表達式,它使用什麼類型的語法,或典型的正則表達式無關緊要。 – lejlot

回答

0

您可以瀏覽所有主要的檢查他們:

import re 


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

如果你想使用文件通配符,然後使用適當的庫匹配的文件名:fnmatch

import fnmatch 

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