对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 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
Python语言快速上手学习方法
Dec 14 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
python编写猜数字小游戏
Oct 06 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
tensorflow 只恢复部分模型参数的实例
Jan 06 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 Python
Python集合的基础操作
Nov 01 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中trait使用方法详细介绍
2017/05/21 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
办公室文员工作自我鉴定
2014/09/19 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2014年底工作总结
2014/12/15 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书