问题
需要通过指定的文本模式去检查字符串的开头或者结尾, 比如文件名后缀, URLScheme 等等
解决方案
1. 检查字符串开头或结尾的一个简单方法是使用 str.startswith() 或者是 str.endswith() 方法比如:
- eg1:
- filename = spam.txt
- filename.endswith(.txt)
- True
- filename.startswith(file:)
- False
- url = http://www.python.org
- url.startswith(http:)
- True
如果想检查多种匹配可能, 只需要将所有的匹配项放入到一个元组中去, 然后传给 startswith() 或者 endswith() 方法:
- eg2:
- import os
- filenames = os.listdir(.)
- filenames
- [ Makefile, foo.c, bar.py, spam.c, spam.h ]
- [name for name in filenames if name.endswith((.c, .h)) ]
- [foo.c, spam.c, spam.h
- any(name.endswith(.py) for name in filenames)
- True
下面是另一个例子:
- eg3:
- from urllib.request import urlopen
- def read_data(name):
- if name.startswith((http:, https:, ftp:)):
- return urlopen(name).read()
- else:
- with open(name) as f:
- return f.read()
奇怪的是, 这个方法中必须要输入一个元组作为参数如果你恰巧有一个 list 或者 set 类型的选择项, 要确保传递参数前先调用 tuple() 将其转换为元组类型
来源: http://www.qdfuns.com/article/49493/b634d807d33e25fe2f5efc3f5f225926.html