對於檔案的搜尋,我們可以透過glob或是fnmatch的方式進行。但是如果只是比對字串,是不是也能用同樣的wildcard語法呢?其實,一切遠比你想的簡單。因為fnmatch有提供一個叫做translate的方法,可以把用來比對的wildcard字串,轉換成為regexp。去看看fnmatch module的文件,你就會看到一個說明如何使用的範例了。我將這個範例修改一下,使他變得更容易使用。
import fnmatch, re def wildcard_match(wildcard, *string_list): """Wildcard-style string match function. :param wildcard: the wildcard string. :param string_list: The list of string to be search. :return: The result is a list which contains the matched strings. If no string matched, an empty list will be returned. """ regex = fnmatch.translate(wildcard) pattern = re.compile(regex) matched_list = [] for s in string_list: if pattern.match(s): matched_list.append(s) return matched_list
留言