百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

「Python 秘籍」字符串开头或结尾匹配

off999 2024-11-25 15:51 28 浏览 0 评论



问题

你需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,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
>>>

如果你想检查多种匹配可能,只需要将所有的匹配项放入到一个元组中去, 然后传给 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
>>>

下面是另一个例子:

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
>>>

讨论

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
>>>

你可以能还想使用正则表达式去实现,比如:

>>> import re
>>> url = 'http://www.python.org'
>>> re.match('http:|https:|ftp:', url)
<_sre.SRE_Match object at 0x101253098>
>>>

这种方式也行得通,但是对于简单的匹配实在是有点小材大用了,本节中的方法更加简单并且运行会更快些。

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

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

相关推荐

分区合并到c盘(磁盘分区合并到c盘)

一、选择我的电脑并点击右键,选择管理菜单。二、选择储存——磁盘管理。三、以将新加卷g盘合并到c盘为例:选择G盘并单击右键呼出菜单,在菜单中选择删除卷菜单。四、点击“是”。点击c盘并单击右键。选择扩展卷...

下载万能钥匙自动连接wifi密码
  • 下载万能钥匙自动连接wifi密码
  • 下载万能钥匙自动连接wifi密码
  • 下载万能钥匙自动连接wifi密码
  • 下载万能钥匙自动连接wifi密码
免费ip转换器(ip转换器是干什么用的)

深度IP转换器软件由广州候胜科技有限公司开发的一款国内IP地址转换器软件深度IP转换器是一款动态IP和静态IP结合的IP地址修改软件,拥有全国城市节点固定IP线路5000加高速服务器IP,属于高匿名8...

笔记本键盘键位图(笔记本键盘键位图怎么看)

在笔记本的键盘左下角有个Fn键,这个键可能很多人都不知道有什么用可能也很少会用到他,就这么被忽略了。而这个Fn键就是笔记本用来开启F1到F12功能的键,有些笔记本是按住Fn键在F1到F12就能发挥他们...

如何消除手机自动出现的广告

方法一:采用关闭手机联网功能  大家都知道手机弹出广告是在手机使用联网功能下发生的,那么可以采用对手机软件联网功能的限制,从而达到屏蔽手机广告的目的,找到手机自带的“网络助手”字样的软件打开后进入到“...

免费wifi上网(怎样打开免费wifi上网)

免费wifi并非完全真实存在。免费wifi虽然在许多公共场所提供,但并非完全免费。通常情况下,提供免费wifi的场所会要求用户进行一些操作,如填写个人信息、观看广告或接受其他形式的付费。这些操作可能会...

本机ip查询地址定位查询(本机ip地址查询位置)

1.地理定位信息。具体的位置是可以通过ip地址查询得出来的。因此,对于当下电信诈骗或者一些网络虚拟的情况下,这样的查询方式是很重要的,也是很容易得出来信息的。只有这样,才能够在定位方面更加精准可靠一点...

wifi万能密码破解器(wifi万能密码破解版)

万能钥匙主要的作用是分享与被分享的关系,你所用万能钥匙一件查询和破解的都是别人分享的密码,不是万能钥匙破解的作用,真正能破解的只是那些密码简单的,比如12345678或者豹子数比如88888888和1...

win8的稳定性(win8稳定还是win10稳定)

如果是玩游戏Win7相对win7稳定一些,能兼容大部分的游戏。其它的应该各有千秋,具体上可以从如下几点了解:1、Win8相对Win7开机更快,内存管理更高效,HTML5支持更好,兼容暂时落后。2、Wi...

怎么切任务管理器(任务管理)

任务管理器切换方法如下1.先按WIN+X,再按T,即可呼出任务管理器2.同时按Ctrl+Shift+Esc,即可呼出任务管理器。3.同时按Ctrl+Alt+Del,在跳转的界面里...

windows激活无法连接到组织网络

1、在桌面新建一个文本文档,把代码复制进去2、点击文件选择“另存为”,在弹出的界面中,将保存位置选择在桌面,保存类型改为所有文件,文件名改为.bat格式的文件,然后点击“保存”按钮; 3、右...

企业邮箱注册申请流程(企业邮箱怎么注册申请)
企业邮箱注册申请流程(企业邮箱怎么注册申请)

点击进入官网,进入邮箱后,点击下方的企业邮箱,开通邮箱有两个版本,一个是免费版,一个是专业版,这边点击免费版的立即开通,弹出的界面,输入账号、密码以及手机号码,输入验证码。扩展知识:企业邮箱特点1、便于管理企业可以自行设定管理员来分配和管理...

2026-01-14 13:43 off999

window截图快捷键(windows自带截屏的方法)
window截图快捷键(windows自带截屏的方法)

1、按Prtsc键截图这样获取的是整个电脑屏幕的内容,按Prtsc键后,可以直接打开画图工具,接粘贴使用。也可以粘贴在QQ聊天框或者Word文档中,之后再选择保存即可。2、按Ctrl+Prtsc键截图截屏获得的内容也是整个电脑屏幕,与上面的...

2026-01-14 13:15 off999

win10一定要创建账户吗(win10需要创建microsoft账户吗)

win10系统安装不需要申请微软账号。如果是在安装win10的过程中,则使用本地账户登录,从安装主要步骤完成之后进入后续设置阶段开始,步骤如下:1、首先就是要输入产品密钥,或者点击左下角“以后再说”。...

win10显示已禁用输入法(w10系统已禁用输入法)

在使用win10的过程中,有时候利用第三方软件过度优化开机启动项目就容易导致win10无法打开输入法问题,这个情况是由于ctfmon程序无法正常启动所致,一般表现在电脑桌面右下角显示已禁用ime的提示...

取消回复欢迎 发表评论: