【Python Cookbook】S01E19 在字符串的开头或者结尾处做文本匹配

目录

  • 问题
  • 解决方案
  • 讨论

问题

如果我们需要在字符串的开头或者结尾处按照指定的文本模式做检查,例如检查文件的扩展名,URL协议类型等等。

解决方案

检查如扩展名等结尾的文本模式,选择 str.startswith() 方法,检查如URL协议类型等开头的文本模式,选择 str.endswith() 方法。

file_name = "spam.txt"
print(file_name.endswith(".txt"))url = "http://www.python.org"
print(url.startswith("http:"))

结果:

True
True

如果需要匹配多个文本模式,则只需在 startswith() 方法和 endswith() 方法中提供包含所有可能的元组参数即可。

filenames = ['Makefile', 'foo.c', 'bar.py', 'spam.c', 'spam.h']
print([name for name in filenames if name.endswith(('.c', '.h'))])
print(any(name.endswith('.py') for name in filenames))

结果:

['foo.c', 'spam.c', 'spam.h']
True

需要注意的是,函数 startswith()endswith() 中,若需要匹配多个文本模式,其参数必须为元组而非列表等。

print([name for name in filenames if name.endswith(['.c', '.h'])])
# 输出错误信息
>>> TypeError: endswith first arg must be str or a tuple of str, not list

讨论

虽然为了前缀与后缀内容,我们有很多方法:

# 切片法
print([filename[-2:] == '.c' for filename in filenames])
# 正则表达式法
import re
url = "http://www.python.org"
print(re.match('http:|https:|ftp:', url))

切片法不够优雅,有局限性,正则表达式法又有些过于重量级。使用本节内容中的两个函数相对来说更加简单,且运行更快。更重要的是,其可以与生成器表达式等结合在一起,实现更多效果功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity 制作表格 配置

using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName “exeConfig.asset”, menuName “Config/exeConfig”, order 3)] public class exeConfig : ScriptableObject { public string carName; [Header("表名…

基础IO(上)

前言 文件 内容 属性 所有对文件的操作就是对内容操作和对属性操作。内容是数据,属性也是数据。存储文件,必须既存储内容又存储数据。创建文件默认就是在磁盘中的。我们要访问一个文件的时候,都是要先把这个文件打开的。访问文件的本质就是…

无人机EasyDSS推拉流视频直播技术在农业植保中的精准应用与展望

随着科技的飞速发展,无人机在农业领域的应用越来越广泛,特别是在农业植保方面,无人机以其独特的优势,为农业生产带来了革命性的改变。 无人机在农业植保中的应用主要体现在两个方面:提高工作效率和精准喷洒药物。在以…

每天认识一家仪器仪表厂商 | 横河测试测量官网 - Yokogawa

横河Yokogawa工商信息: 横河测量技术(上海)有限公司于2000年08月09日成立。法定代表人山崎正晴(YAMAZAKI MASAHARU),公司经营范围包括:从事测量科技、机电科技领域内技术开发、技术转让、技术咨询、技术服务,仪器仪表、通讯设备、…

专业130+总分400+四川大学951信号与系统考研经验川大电子信息与通信工程,真题,大纲,参考书。教材。

今年四川大学951信号与系统专业课130(据我所知没有140以上的今年),总分400,顺利上岸川大,回顾一下自己这一年的复习,希望自己的经历可以对大家复习有所借鉴,也是对自己的考研画上句话。专业课&a…

全屋智能的本质是低成本的重构

全屋智能(这里指的不是每个电器都可以在APP上控制,而是基于场景化的全屋智能),我第一次去圣都总部听讲的时候是不准备做的(我的理解是这玩意儿带来的是至少十万的成本)。但随着对于装修各项事物的接触&…

使用from…import语句导入模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在使用import语句导入模块时,每执行一条import语句都会创建一个新的命名空间(namespace),并且在该命名…

性格测试.

文章目录 大五人格MBTI九型人格性格测试网站 大五人格 “大五人格"理论,也被称为"五因素模型”(Five-Factor Model, FFM)或"人格大五结构模型",是现代心理学中最为广泛接受的人格理论之一。它认为人格特质可…

爬虫案例实战

文章目录 一、窗口切换实战二、京东数据抓取 一、窗口切换实战 案例实战:使用selenium实现打开百度和腾讯两个窗口并切换 知识点:用到selenium中execute_script()执行js代码及switch_to.window()方法 全部代码如下: import time import war…

路由懒加载

在 Vue.js 中,路由懒加载(也称为代码分割)是一种优化策略,它允许你将 Vue 组件分割成不同的代码块,并在需要时按需加载它们。这有助于减少初始加载时间,提高用户体验。 Vue Router 支持 Webpack 的动态 im…

57.void指针(万能指针)

目录 一.什么是void指针 二.视频教程 一.什么是void指针 在定义变量的时候,需要用到变量的类型,变量的类型在表示在内存中的大小,而void是空,表示的是无类型。所以如果用void来定义一个变量会发生错误(无法在内存中挖…

mysql中InnoDB存储引擎的Buffer Pool

大家好。众所周知,对于使用InnoDB作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是存储在磁盘上的。在处理客户端的请求时,当需要访问某个页…

思维导图——幕布

一、前言 幕布是一款专注于简化和组织信息的大纲笔记应用,它旨在帮助用户高效地整理知识点、优化工作流程以及规划个人生活。 二、软件特点 幕布工具的核心优势在于其能够快速将用户的输入转换成清晰的思维导图,便于视觉化地理解和记忆信息。 幕布还具…

插入mysql报错:Incorrect string value: ‘\xF0\xAC\x8C\x97\xE5\x9E...‘

原因分析 这个错误通常发生在使用MySQL数据库时,尝试将包含四字节UTF-8字符(通常表示为Unicode码点大于UFFFF的字符)插入到一个不支持这种字符的字符集列中。一般在插入睡眠emoji表情时容易遇到 解决 -- 设置数据库编码utf8mb4 ALTER DAT…

TrollInstallerX小白一键安装巨魔商店 分分钟安装成功

概述 TrollInstallerX 是一款通用的 TrollStore 安装程序。它注重可靠性和易用性。它的速度也非常快,能够在几秒钟内将 TrollStore 和/或其持久性助手安装到最新设备上。 TrollInstallerX 支持所有运行 iOS 14.0 - 16.6.1 的设备,包括 arm64 和 arm64e。…

若依分离版—增加通知公告预览及缩放功能

若依分离版—增加通知公告预览及缩放功能 前言开发通知公告 前言 若依分离版的通知公告没有预览功能&#xff0c;想开发通知公告功能 开发通知公告 效果如下 具体开发内容 修改若依notice代码如下。 <template><div class"app-container"><el-…

103.网络游戏逆向分析与漏洞攻防-ui界面的设计-加速功能的开关设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

李廉洋:6.4-6.5黄金原油再次走低,美盘行情分析及最新策略。

黄金消息面分析&#xff1a;全球债券周二上涨&#xff0c;呼应美债隔夜的涨势。美联储或早降息的押注增强了主权债务的吸引力。澳大利亚和新西兰10年期债券收益率下跌至少8个基点&#xff0c;先前数据显示&#xff0c;美国5月份工厂活动萎缩的速度加快。日本10年期债券收益率下…

【学习笔记】pip安装pyinstaller报错问题

pip 安装 pyinstaller 报错问题 PyInstaller 将 Python 应用程序及其所有依赖项捆绑到一个软件包中。 用户无需安装 Python 解释器或任何模块&#xff0c;即可运行打包后的应用程序。 PyInstaller 支持 Python 3.8 及更新版本&#xff0c;并能正确捆绑 numpy、matplotlib、PyQ…

Nginx location 与 Rewrite

Nginx正则表达式 location 通过前缀或正则匹配用户的URL访问路径做页面跳转、访问控制和代理转发 location 大致可以分为三类&#xff1a; 精准匹配&#xff1a;location / {...} 一般匹配&#xff1a;location / {...} 正则匹配&#xff1a;location ~ / {...} location…