对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的14张思维导图
Oct 17 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
Python3匿名函数用法示例
Jul 25 Python
一篇文章弄懂Python中所有数组数据类型
Jun 23 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
python操作gitlab API过程解析
Dec 27 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
Python获取excel内容及相关操作代码实例
Aug 10 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
Python与C/C++的相互调用案例
Mar 04 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获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php实现文件编码批量转换
2014/03/10 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python中is和==的区别详解
2018/11/15 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
QQ空间主人寄语大全
2014/04/12 职场文书
六五普法宣传标语
2014/10/06 职场文书
租赁协议书
2015/01/27 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
学校体育节班级口号
2015/12/25 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python