对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的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
python与php实现分割文件代码
Mar 06 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
Python socket实现简单聊天室
Apr 01 Python
python Spyder界面无法打开的解决方法
Apr 27 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 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
星际原理概述
2020/03/04 星际争霸
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
js 字符串操作函数
2009/07/25 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
js实现简单模态框实例
2018/11/16 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
python中取绝对值简单方法总结
2020/07/24 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
《宿建德江》教学反思
2014/04/23 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
师德师风整改措施
2014/10/24 职场文书
工程部岗位职责
2015/02/10 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
民主生活会意见
2015/06/05 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
2016大一新生军训感言
2015/12/08 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers