对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自动安装pip
Apr 24 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
在Python的Django框架下使用django-tagging的教程
May 30 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
redis数据库及与python交互用法简单示例
Nov 01 Python
python实现人机五子棋
Mar 25 Python
python 实现两个线程交替执行
May 02 Python
Python datetime模块使用方法小结
Jun 18 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 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/06/03 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
js取小数点后两位四种方法
2019/01/18 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python通过Pillow实现图片对比
2020/04/29 Python
提高python代码运行效率的一些建议
2020/09/29 Python
Django Form常用功能及代码示例
2020/10/13 Python
Python中pass的作用与使用教程
2020/11/13 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
党员批评与自我批评发言稿
2014/10/14 职场文书
感谢信范文大全
2015/01/23 职场文书
八年级作文之友谊
2019/12/02 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript