本文实例讲述了Python在字符串的开头或结尾处进行文本匹配操作。分享给大家供大家参考,具体如下:
问题:在字符串的开头或结尾处按照指定的文本模式做检查,例如检查文件的扩展名、URL协议类型等;
解决方法:使用str.startswith()
和str.endswith()
方法
1
2
3
4
5
6
7
8
9
10
11
|
>>> filename = 'spam.txt' >>> filename.endswith( '.txt' ) True >>> filename.startswith( 'file:' ) False >>> url = 'http://www.python.org' >>> url.startswith( 'htto:' ) False >>> url.startswith( 'http:' ) True >>> |
若同时针对多个选项做检查,只需给函数startswith()
和str.endswith()
提供包含多个可能选项的元组即可:
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> import os >>> os.getcwd() 'D:\\4autotests\\02script\\pythonbase' >>> os.listdir() [ 'foo.py' , 'hello.txt' , 'Makefile' , 'spam.c' , 'spam.h' , 'test1.py' ] >>> filename = os.listdir() >>> filename [ 'foo.py' , 'hello.txt' , 'Makefile' , 'spam.c' , 'spam.h' , 'test1.py' ] >>> [name for name in filename if name.endswith(( '.c' , '.h' ))] [ 'spam.c' , 'spam.h' ] >>> any (name.endswith( '.py' ) for name in filename) True |
最后,当startswith()
和str.endswith()
方法和其他操作(比如常见的数据整理操作)结合起来时效果也很好。例如,下面的语句检查目录中有无出现特定的文件:
1
2
3
4
5
6
7
8
|
>>> os.getcwd() 'D:\\4autotests\\02script\\pythonbase' >>> os.listdir() [ 'foo.py' , 'hello.txt' , 'Makefile' , 'spam.c' , 'spam.h' , 'test1.py' ] >>> if any (name.endswith(( '.txt' , '.py' )) for name in os.listdir(os.getcwd())): print ( '文件存在' ) 文件存在 >>> |
(代码摘自《Python Cookbook》)
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/apple2016/p/5767494.html