对python 匹配字符串开头和结尾的方法详解

 更新时间:2018年10月27日 09:14:09   作者:枫叶千言  
今天小编就为大家分享一篇对python 匹配字符串开头和结尾的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1、你需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URL Scheme 等等。检 查 字 符 串 开 头 或 结 尾 的 一 个 简 单 方 法 是 使 用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() 方法:

>>> 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
>>>
 
#示例2
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()将其转换为元组类型。比如:

>>> choices = ['http:', 'ftp:']
>>> url = 'http://www.python.org'
>>> url.startswith(choices)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: startswith first arg must be str or a tuple of str, not list
>>> url.startswith(tuple(choices))
True
>>>

3、startswith() 和 endswith() 方法提供了一个非常方便的方式去做字符串开头和结尾的检查。类似的操作也可以使用切片来实现,但是代码看起来没有那么优雅。比如:

>>> filename = 'spam.txt'
>>> filename[-4:] == '.txt'
True
>>> url = 'http://www.python.org'
>>> url[:5] == 'http:' or url[:6] == 'https:' or url[:4] == 'ftp:'
True
>>>

4、你可以能还想使用正则表达式去实现,比如:

>>> import re
>>> url = 'http://www.python.org'
>>> re.match('http:jhttps:jftp:', url)
<_sre.SRE_Match object at 0x101253098>
>>>

5、当和其他操作比如普通数据聚合相结合的时候 startswith()和endswith() 方法是很不错的。比如,下面这个语句检查某个文件夹中是否存在指定的文件类型:

if any(name.endswith(('.c', '.h')) for name in listdir(dirname)):
...

以上这篇对python 匹配字符串开头和结尾的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python类继承用法实例分析

    python类继承用法实例分析

    这篇文章主要介绍了python类继承用法,实例分析了Python类的定义与类继承的实现技巧,需要的朋友可以参考下
    2015-05-05
  • python3.0 模拟用户登录,三次错误锁定的实例

    python3.0 模拟用户登录,三次错误锁定的实例

    下面小编就为大家带来一篇python3.0 模拟用户登录,三次错误锁定的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Python3中的re.findall()方法及re.compile()

    Python3中的re.findall()方法及re.compile()

    这篇文章主要介绍了Python3中的re.findall()方法及re.compile(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 详解使用 pyenv 管理多个版本 python 环境

    详解使用 pyenv 管理多个版本 python 环境

    本篇文章主要介绍了详解使用 pyenv 管理多个版本 python 环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • python rsa 加密解密

    python rsa 加密解密

    本篇文章主要介绍了python rsa加密解密 (编解码,base64编解码)的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • Python爬虫之Selenium实现键盘事件

    Python爬虫之Selenium实现键盘事件

    这篇文章主要介绍了Python爬虫之Selenium实现键盘事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • django 使用 request 获取浏览器发送的参数示例代码

    django 使用 request 获取浏览器发送的参数示例代码

    这篇文章主要介绍了django 使用 request 获取浏览器发送的参数示例代码,获取数据有四种方式,具体内容详情大家跟随脚本之家小编一起看看吧
    2018-06-06
  • Python中random函数的用法整理大全

    Python中random函数的用法整理大全

    random库是使用随机数的Python标准库,random库主要用于生成随机数,下面这篇文章主要给大家介绍了关于Python random函数用法的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Pytorch PyG实现EdgePool图分类

    Pytorch PyG实现EdgePool图分类

    这篇文章主要为大家介绍了Pytorch PyG实现EdgePool图分类示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • python/golang实现循环链表的示例代码

    python/golang实现循环链表的示例代码

    这篇文章主要介绍了python/golang如何实现循环链表,帮助大家更好的理解和学习循环链表的实现方法,感兴趣的朋友可以了解下
    2020-09-09

最新评论