python字符串匹配开头_对python 匹配字符串开头和结尾的方法详解

python字符串匹配开头_对python 匹配字符串开头和结尾的方法详解1、你需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URLScheme等等。检查字符串开头或结尾的一个简单方法是使用str.startswith()或者是str.endswith()方法。比如:>>>filename=’spam.txt’>>>filename.endswith(‘.tx…

大家好,又见面了,我是你们的朋友全栈君。

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 “”, line 1, in

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)

>>>

5、当和其他操作比如普通数据聚合相结合的时候 startswith()和endswith() 方法是很不错的。比如,下面这个语句检查某个文件夹中是否存在指定的文件类型:

if any(name.endswith((‘.c’, ‘.h’)) for name in listdir(dirname)):

以上这篇对python 匹配字符串开头和结尾的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2018-10-25

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159991.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 人工智能学习路线

    阶段一、人工智能基础- 高等数学必知必会本阶段主要从数据分析、概率论和线性代数及矩阵和凸优化这四大块讲解基础,旨在训练大家逻辑能力,分析能力。拥有良好的数学基础,有利于大家在后续课程的学习中更好的理解机器学习和深度学习的相关算法内容。同时对于AI研究尤为重要,例如人工智能中的智能很大一部分依托“概率论”实现的。一、数据分析1)常数e2)导数3)梯度4)Taylor5)gini系数6)信息熵与…

    2022年4月9日
    1.3K
  • 新版大官场–男人是山

    新版大官场–男人是山一部官场小说,写的有点虚无缥缈,不够真实。[@more@]这本小说的写法有点发散,期间有些年份的跨度不够合理,中规中矩,闲时可看看。…

    2022年4月28日
    114
  • 数据挖掘十大算法(四):Apriori(关联分析算法)

    数据挖掘十大算法(四):Apriori(关联分析算法)终于到了机器学习实战的第十一章了,这也是继K-均值后的第二个无监督学习算法了。同样的该算法也是在一堆数据集中寻找数据之间的某种关联,这里主要介绍的是叫做Apriori的‘一个先验’算法,通过该算法我们可以对数据集做关联分析——在大规模的数据中寻找有趣关系的任务,本文主要介绍使用Apriori算法发现数据的(频繁项集、关联规则)。这些关系可以有两种形式:频繁项集、关联规则。    频…

    2022年5月1日
    32
  • Java 装饰模式 (Decorator)「建议收藏」

    Java 装饰模式 (Decorator)

    2022年2月4日
    37
  • 缓存穿透、缓存击穿、缓存雪崩的理解和解决方案[通俗易懂]

    缓存穿透、缓存击穿、缓存雪崩的理解和解决方案[通俗易懂]目录一、缓存穿透二、缓存击穿三:缓存雪崩在生产环境中,会因为很多的原因造成访问请求绕过了缓存,都需要访问数据库持久层,虽然对Redsi缓存服务器不会造成影响,但是数据库的负载就会增大,使缓存的作用降低一、缓存穿透1、缓存穿透理解缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓存保护后端持久的意义。缓存穿透示意图:缓存穿透问…

    2022年6月20日
    38
  • 网页设计与制作毕业论文(解析ip数据包课程设计)

    PAGE单位代码学号分类号毕业设计(论文)基于HTML5的P2P流媒体传输技术的设计与实现院(系)名称专业名称计算机科学与技术学生姓名指导教师2014年6月北京航空航天大学毕业设计(论文)第PAGE\*ROMANI页基于HTML5的P2P流媒体传输技术的设计与实现摘要P2P流媒体传输技术是一项基于对等网络的大规模流媒体实时直播技术。P2P流媒体传输技术使…

    2022年4月15日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号