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


Posted in Python onOctober 27, 2018

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中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
Python中规范定义命名空间的一些建议
Jun 04 Python
Python科学计算之Pandas详解
Jan 15 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
python正则表达式的使用
Jun 12 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
基于python元祖与字典与集合的粗浅认识
Aug 23 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
Python面向对象程序设计示例小结
Jan 30 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
python实现最短路径的实例方法
Jul 19 Python
Python判断以什么结尾以什么开头的实例
Oct 27 #Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 #Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 #Python
python 快速把超大txt文件转存为csv的实例
Oct 26 #Python
python针对不定分隔符切割提取字符串的方法
Oct 26 #Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 #Python
Python异常的检测和处理方法
Oct 26 #Python
You might like
php对象在内存中的存在形式分析
2015/02/03 PHP
ThinkPHP安装和设置
2015/07/27 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
js 操作css实现代码
2009/06/11 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
美德好少年主要事迹
2014/01/29 职场文书
经营理念口号
2014/06/21 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
教师党员个人整改措施
2014/10/27 职场文书
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏