对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自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
python3判断url链接是否为404的方法
Aug 10 Python
python: 判断tuple、list、dict是否为空的方法
Oct 22 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
django-rest-swagger的优化使用方法
Aug 29 Python
基于python实现雪花算法过程详解
Nov 16 Python
python实现while循环打印星星的四种形状
Nov 23 Python
Django3.0 异步通信初体验(小结)
Dec 04 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
python Cartopy的基础使用详解
Nov 01 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 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 魔术函数使用说明
2010/02/21 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
vue axios用法教程详解
2017/07/23 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
python实现AES加密与解密
2019/03/28 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
python中常见错误及解决方法
2020/06/21 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
学校联谊活动方案
2014/02/15 职场文书
基层工作经验证明样本
2014/11/16 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers