[00103]用Shell通配符匹配字符串
来源:互联网 发布:辽金之战 知乎 编辑:程序博客网 时间:2024/05/09 16:33
用Shell通配符匹配字符串
一、 解决问题
你想使用 Unix Shell 中常用的通配符(比如 .py , Dat[0-9].csv 等)去匹配文本字符串
二、解决方案
fnmatch 模块 fnmatch(), fnmatchcase()
三、代码说明
from fnmatch import fnmatch, fnmatchcase"""fnmatch() 函数使用底层操作系统的大小写敏感规则不同的系统是不一样的)来匹配模式。"""resval = fnmatch("foo.txt", "*.txt")print (resval) #->Trueresval = fnmatch("foo.txt", "?oo.txt")print (resval) #->Trueresval = fnmatch("Dat45.csv", "Dat[0-9]*")print (resval) #->Falsenames = ['Dat1.csv', 'Dat2.csv', 'config.ini', 'foo.py']fl = [name for name in names if fnmatch(name, 'Dat*.csv')]print (fl) #->['Dat1.csv', 'Dat2.csv']"""使用fnmatchcase() 来解决跨平台的问题, 保持大小写敏感"""#On OS X (Mac)resval = fnmatch("foo.txt", "*.TXT")print (resval) #->False#(window)resval = fnmatch("foo.txt", "*.TXT")print (resval) #->True
"""在处理非文件名的字符串也是很有用处"""addresses = [ '5412 N CLARK ST', '1060 W ADDISON ST', '1039 W GRANVILLE AVE', '2122 N CLARK ST', '4802 N BROADWAY']from fnmatch import fnmatchresval = [addr for addr in addresses if fnmatchcase(addr, '* ST')]print (resval) #->['5412 N CLARK ST', '1060 W ADDISON ST', '2122 N CLARK ST']
四、关联知识
五、总结
六、代码地址
github地址:https://github.com/weichen666/python_cookbook
目录/文件:first_selection/learn_str_fnmacth.py
七、参考
0 0
- [00103]用Shell通配符匹配字符串
- 通配符匹配字符串
- 字符串通配符匹配问题
- 字符串通配符匹配*,?算法
- 通配符字符串匹配
- 字符串通配符的匹配算法
- 带通配符*的字符串匹配
- 通配符的字符串匹配算法
- 通配符匹配字符串 Wildcard Matching
- 通配符的字符串匹配算法
- 含有通配符的字符串匹配
- 带通配符的字符串匹配
- 带通配符的字符串匹配
- 字符串匹配算法,包含通配符"*"、"?"的匹配
- 基于《PythonCookbook》的学习(3)——利用 Shell 通配符做字符串匹配
- 【每日面试题】字符串通配符匹配问题
- 含有通配符的字符串匹配算法
- 带有通配符的两个字符串匹配问题
- J2EE13规范
- android AlertDialog的简单使用
- CXF架构
- linux tail 命令详解
- linux下实现进度条小程序
- [00103]用Shell通配符匹配字符串
- shiro.ehcache.xml配置参数
- sql website注入 渗透测试
- MFC 按钮上贴png图片 边框为透明的
- Java WeakHashMap
- C++创建dll文件及使用方法
- UML系列图——静态图(对象图 Object和包图 Package)
- Git教程学习(八)—使用GitHub
- javaScript 数值型和字符串型之间的转换