对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 30 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python简单读取json文件功能示例
Nov 30 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
Python中的xlrd模块使用原理解析
May 21 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
python音频处理的示例详解
Dec 23 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将任何格式视频转为flv的代码
2009/09/03 PHP
php摘要生成函数(无乱码)
2012/02/04 PHP
php文件操作相关类实例
2015/06/18 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
js压缩利器
2007/02/20 Javascript
用javascript自动显示最后更新时间
2007/03/15 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
Python的形参和实参使用方式
2019/12/24 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
python urllib和urllib3知识点总结
2021/02/08 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
EJB timer的种类
2014/10/28 面试题
生态养殖创业计划书
2014/05/06 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技
nginx配置指令之server_name的具体使用
2022/08/14 Servers