对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网页请求urllib2模块简单封装代码
Feb 07 Python
Python自动化测试工具Splinter简介和使用实例
May 13 Python
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
对于Python装饰器使用的一些建议
Jun 03 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
PyQt5 多窗口连接实例
Jun 19 Python
用django设置session过期时间的方法解析
Aug 05 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
python Canny边缘检测算法的实现
Apr 24 Python
Python中如何引入第三方模块
May 27 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
python中HTMLParser模块知识点总结
Jan 25 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桌面中心(一) 创建数据库
2007/03/11 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
python从子线程中获得返回值的方法
2019/01/30 Python
python多线程并发实例及其优化
2019/06/27 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
python实现网页录音效果
2020/10/26 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
一年级班主任寄语
2014/01/19 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
门店业绩提升方案
2014/06/08 职场文书
建筑安全生产责任书
2014/07/22 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
企业介绍信范文
2015/01/30 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
通知范文怎么写
2015/04/16 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python