对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 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python+Wordpress制作小说站
Apr 14 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
Python中Numpy ndarray的使用详解
May 24 Python
python求最大值最小值方法总结
Jun 25 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
wxpython绘制圆角窗体
Nov 18 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
python开发人人对战的五子棋小游戏
May 02 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也可以?成Shell Script
2006/10/09 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
python多进程实现进程间通信实例
2017/11/24 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
Python3.9新特性详解
2020/10/10 Python
pandas 数据类型转换的实现
2020/12/29 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
婚庆公司计划书
2014/09/15 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS