对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使用xmlrpc实例讲解
Dec 17 Python
Python生成随机数的方法
Jan 14 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
BP神经网络原理及Python实现代码
Dec 18 Python
Python中的引用知识点总结
May 20 Python
Python Numpy计算各类距离的方法
Jul 05 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
python线程中的同步问题及解决方法
Aug 29 Python
MATLAB数学建模之画图汇总
Jul 16 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
python爬虫请求头的使用
Dec 01 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
学习ExtJS form布局
2009/10/08 Javascript
修复ie8&amp;chrome下window的resize事件多次执行
2011/10/20 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
Python正则表达式匹配HTML页面编码
2015/04/08 Python
Python实现数据库编程方法详解
2015/06/09 Python
Python 转义字符详细介绍
2017/03/21 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
QML用PathView实现轮播图
2020/06/03 Python
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
学校联谊活动方案
2014/02/15 职场文书
加入学生会演讲稿
2014/04/24 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
校园运动会广播稿
2015/08/19 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
Python机器学习之基础概述
2021/05/19 Python