python 匹配字符串开头和结尾

python 匹配字符串开头和结尾python匹配字符串开头和结尾

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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)):
...







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

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

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


相关推荐

  • 计算机启动显示安装程序正在启动服务,电脑停在“安装程序正在启动服务”解决办法…[通俗易懂]

    计算机启动显示安装程序正在启动服务,电脑停在“安装程序正在启动服务”解决办法…[通俗易懂]电脑卡在“安装程序正在启动服务”解决办法朋友你好我是小飞这是2019年我们第315次见面。早上一小伙伴的电脑出问题了,送过来我解决了之后,决定把这些问题和解决步骤总结出来,以便将来有人用得上。问题描述:电脑恢复出厂模式后,重新启动会一直停在“安装程序正在启动服务”。不管你怎么开机重启都不行。这里,提出解决步骤:重新启动,连续按F2,进入BIOS系统,然后按enter回车键,重新启动。(最重要的一步…

    2022年6月15日
  • butterknife Annotation processors must be explicitly declared now…

    butterknife Annotation processors must be explicitly declared now…

    2021年9月30日
  • RFID-RC522/STM32F103RB/KEIL5 简单实现读取卡片ID[通俗易懂]

    RFID-RC522/STM32F103RB/KEIL5 简单实现读取卡片ID[通俗易懂]在这篇文章【https://blog.csdn.net/qq_28877125/article/details/80437095】的基础上修改完成!核心源码main.c#include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;delay.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;#include&amp;amp;amp;amp;amp;amp;amp;am

    2022年9月15日
  • Python获取时间戳_python爬虫时间戳

    Python获取时间戳_python爬虫时间戳获取时间戳importtimedefget_time_stamp()->str:_t=time.localtime()time_stamp=f”{str(_t.tm_mon).zfill(2)}{str(_t.tm_mday).zfill(2)}”+\f”-{str(_t.tm_hour).zfill(2)}{str(_t.tm_min).zfill(2)}{str(_t.tm_sec).zfill(2)}”returntime

    2022年9月1日
  • python全局变量赋值_Python全局变量和局部变量[通俗易懂]

    python全局变量赋值_Python全局变量和局部变量[通俗易懂]python中,对于变量作用域的规定有些不一样。在诸如C/C++、java等编程语言中,默认在函数的内部是能够直接訪问在函数外定义的全局变量的,可是这一点在python中就会有问题。以下是一个样例。test.py:#!/usr/bin/pythonCOUNT=1deffunc():COUNT=COUNT+1func()Pythontest.py。会执行报错:Traceback(mos…

    2022年10月28日
  • latex的参考文献写法标准_endnote怎么修改参考文献编号格式

    latex的参考文献写法标准_endnote怎么修改参考文献编号格式LaTeX参考文献的排版与引用​ 在论文写作的过程中,为了体现论文的科学性、严谨性和规范性,我们常常需要引用大量的参考文献来引证自己的观点。参考文献(Reference)往往都是放在论文的最后,记录了所引用论文的标题、作者、期刊或会议、出版时间等信息,文中还需要明确有顺序的进行引用标注。​ 本篇将介绍LaTeX常用的参考文献排版与引用方式,所用到的宏包都要写在\documentclass命令之后和\begin{docuemnt}之前,在本文中,我们会用的宏包文件有:\usepackag

    2022年9月9日

发表回复

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

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