对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中的文本处理
Apr 11 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
Python模拟用户登录验证
Sep 11 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
python实现批量转换图片为黑白
Jun 16 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
Python 在函数上添加包装器
Jul 28 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 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 常用函数库和一些实用小技巧
2009/01/01 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
layui导航栏实现代码
2017/05/19 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
python 中random模块的常用方法总结
2017/07/08 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Django重设Admin密码过程解析
2020/02/10 Python
Python实现对adb命令封装
2020/03/06 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
聚网科技C++面试笔试题
2015/09/01 面试题
linux面试题参考答案(9)
2015/01/07 面试题
党员大会主持词
2014/04/02 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
环保主题班会教案
2015/08/13 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers