細細.魚 发表于 2017-5-7 14:45:35

python fnmatch实现shell风格匹配模式来匹配特定的字符

今天看《Programming Python 3nd Edition》时,偶然看到fnmatch模块,于是查看了它的用法记录在此^_^

Python 的fnmatch说明:

 fnmatch 实现shell patterns表匹配字符串或文件名

1,fnmatch.fnmatch(name, pattern)方法:测试name是否匹配pattern,返回true/false

  eg:

[*]>>>fnmatch.fnmatch('*py','*.py')  
[*]>>>False  
[*]  
[*]>>>fnmatch.fnmatch('tlie.py','*.py')  
[*]>>>True  


注意:匹配样式是unix shell风格的.其中*表示匹配任何单个或多个字符.?表示匹配单个字符; 匹配单个seq中的字符;[!seq]匹配单个不是seq中的字符.与此相同功能的还有fnmatch.fnmatchcase(name, pat),用法基本相似;

2.fnmatch.filter(names, pat)实现列表特殊字符的过滤或筛选,返回符合匹配模式的字符列表,当然names表示的是列表;

eg:


[*]>>>names = ['dlsf', 'ewro.txt', 'te.py', 'youe.py']  
[*]#匹配以.py结尾的字符  
[*]>>> fnmatch.filter(names, '*.py')  
[*]>>> ['te.py', 'youe.py']  
[*]  
[*]>>> fnmatch.filter(names, '')  
[*]>>> []  
[*]#匹配以d或e开头的字符  
[*]>>>fnmatch.filter(names, '*')  
[*]>>>['dlsf', 'ewro.txt']  


 
当然还有其它的方法(像将shell 风格的匹配模式转换成规则的模式等等),暂时没有用到,在此就不多做说明。
页: [1]
查看完整版本: python fnmatch实现shell风格匹配模式来匹配特定的字符