Python字符串匹配:startswith与endswitch高效用法解析

顾星河
顾星河
发布时间:2026-10-12| 3人浏览过
原创

本文详解Python中检查字符串开头与结尾的两种核心方法:startswith()和endswith()。通过元组参数实现多模式匹配,对比字符串切片与正则表达式的优劣,并结合文件过滤等实际场景,提供高效且优雅的代码实现方案。

1、在实际开发中,经常需要根据特定的文本模式来验证字符串的起始或结束部分,例如判断文件后缀名或URL协议类型。实现这一需求最直观且高效的方式是调用字符串对象的startswith()或endswith()方法。具体示例如下:

>>> filename = 'spam.txt'
>>> filename.endswith('.txt')
True
>>> filename.startswith('file:')
False
>>> url = 'http://www.python.org'
>>> url.startswith('http:')
True
>>> 

2、若需同时检查多种可能的匹配模式,只需将这些模式封装为一个元组,并作为参数传递给startswith()或endsworth()方法即可:

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

值得注意的是,该方法严格要求参数必须是字符串或字符串元组。如果备选方案存储为列表或集合类型,在调用前必须使用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。