Python每日一練0014

問題

你想使用 Unix Shell 中經常使用的通配符(好比 *.py , Dat[0-9]*.csv 等)去匹配文本字符串html

解決方案

使用fnmatch模塊的fnmatchfnmatchcase函數python

>>> import fnmatch
>>> print(fnmatch.fnmatch('hello.py', '*.py'))
True
>>> print(fnmatch.fnmatch('hello.py', 'hell?.py'))
True
>>> print(fnmatch.fnmatchcase('hello.py', '*.py'))
True
>>> print(fnmatch.fnmatchcase('hello.py', 'hell?.py'))
True

其中fnmatchfnmatchcase的區別是正則表達式

  • fnmatch(filename, pattern)對大小寫的敏感依賴於系統,意思是在判斷匹配以前,會對兩個參數調用os.path.normcase(path),而後再進行匹配。關於os.path.normcase(path)見:https://docs.python.org/3/lib...
  • fnmatchcase(filename, pattern)對大小寫的敏感不依賴於系統

討論

fnmatch支持的通配符以下:微信

Pattern Meaning
* 匹配任意字符串
? 匹配任意一個字符
[seq] 匹配在seq裏的任意一個字符
[!seq] 匹配不在seq裏的任意一個字符

fnmatch() 匹配能力介於簡單的字符串方法和強大的正則表達式之間。 若是在數據處理操做中只須要簡單的通配符就能完成的時候,這一般是一個比較合理的方案。函數

來源

Python Cookbookspa

關注

歡迎關注個人微信公衆號:python每日一練code

相關文章
相關標籤/搜索