本文实例讲述了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