对python 匹配字符串开头和结尾的方法详解
1、你需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URLScheme等等。检查字符串开头或结尾的一个简单方法是使用str.startswith()或者是str.endswith()方法。比如:
>>>filename='spam.txt'
>>>filename.endswith('.txt')
True
>>>filename.startswith('file:')
False
>>>url='http://www.python.org'
>>>url.startswith('http:')
True
>>>
2、如果你想检查多种匹配可能,只需要将所有的匹配项放入到一个元组中去,然后传给startswith()或者endswith()方法:
>>>importos
>>>filenames=os.listdir('.')
>>>filenames
['Makefile','foo.c','bar.py','spam.c','spam.h']
>>>[namefornameinfilenamesifname.endswith(('.c','.h'))]
['foo.c','spam.c','spam.h'
>>>any(name.endswith('.py')fornameinfilenames)
True
>>>
#示例2
fromurllib.requestimporturlopen
defread_data(name):
ifname.startswith(('http:','https:','ftp:')):
returnurlopen(name).read()
else:
withopen(name)asf:
returnf.read()
奇怪的是,这个方法中必须要输入一个元组作为参数。如果你恰巧有一个list或者set类型的选择项,要确保传递参数前先调用tuple()将其转换为元组类型。比如:
>>>choices=['http:','ftp:'] >>>url='http://www.python.org' >>>url.startswith(choices) Traceback(mostrecentcalllast): File"",line1,in TypeError:startswithfirstargmustbestroratupleofstr,notlist >>>url.startswith(tuple(choices)) True >>>
3、startswith()和endswith()方法提供了一个非常方便的方式去做字符串开头和结尾的检查。类似的操作也可以使用切片来实现,但是代码看起来没有那么优雅。比如:
>>>filename='spam.txt' >>>filename[-4:]=='.txt' True >>>url='http://www.python.org' >>>url[:5]=='http:'orurl[:6]=='https:'orurl[:4]=='ftp:' True >>>
4、你可以能还想使用正则表达式去实现,比如:
>>>importre
>>>url='http://www.python.org'
>>>re.match('http:jhttps:jftp:',url)
<_sre.SRE_Matchobjectat0x101253098>
>>>
5、当和其他操作比如普通数据聚合相结合的时候startswith()和endswith()方法是很不错的。比如,下面这个语句检查某个文件夹中是否存在指定的文件类型:
ifany(name.endswith(('.c','.h'))fornameinlistdir(dirname)):
...
以上这篇对python匹配字符串开头和结尾的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。