0.摘要

在Linux Shell中,我们可以用ls *.py的命令显示所有以.py结尾的文件或文件夹。在python中我们可以借助fnmatch模块,实现含通配符的字符串匹配。

 

1.常用通配符

符号

作用

*

匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file *

?

匹配任何一个字符(不在括号内时)?代表任意1个字符 ls file 0

[abcd]

匹配abcd中任何一个字符

[a-z]

表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0

{..}

表示生成序列. 以逗号分隔,且不能有空格

补充

 

[!abcd]

或[^abcd]表示非,表示不匹配括号里面的任何一个字符

 

2.fnmatch模块

from fnmatch import fnmatch, fnmatchcase

print(fnmatch('foo.txt', '*.txt'))   #True
print(fnmatch('foo.txt', '?oo.txt')) #True
from fnmatch import fnmatchcase as match

addresses = [
    '5412 N CLARK ST',
    '1060 W ADDISON ST',
    '1039 W GRANVILLE AVE',
    '2122 N CLARK ST',
    '4802 N BROADWAY',
]

a = [addr for addr in addresses if match(addr, '* ST')]
print(a)
# ['5412 N CLARK ST', '1060 W ADDISON ST', '2122 N CLARK ST']

b = [addr for addr in addresses if match(addr, '54[0-9][0-9] *CLARK*')]
print(b)
#['5412 N CLARK ST']