Python: 字符串开头或结尾匹配str.startswith(),str.endswith()

问题

需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URLScheme 等等。

解决方案

1.检查字符串开头或结尾的一个简单方法是使用str.startswith() 或者是str.endswith() 方法。比如:

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

如果想检查多种匹配可能,只需要将所有的匹配项放入到一个元组中去,然后传给startswith() 或者endswith() 方法:

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

下面是另一个例子:

eg3:
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() 方法提供了一个非常方便的方式去做字符串开头和结尾的检查。

2.类似的操作也可以使用切片来实现,但是代码看起来没有那么优雅。

eg:
>>> filename = ‘spam.txt‘
>>> filename[-4:] == ‘.txt‘
True
>>> url = ‘http://www.python.org‘
>>> url[:5] == ‘http:‘ or url[:6] == ‘https:‘ or url[:4] == ‘ftp:‘
True
>>>

3.你可以能还想使用正则表达式去实现,

eg:
>>> import re
>>> url = ‘http://www.python.org‘
>>> re.match(‘http:jhttps:jftp:‘, url)
<_sre.SRE_Match object at 0x101253098>
>>>
这种方式也行得通,但是对于简单的匹配实在是有点小材大用了,本节中的方法更加简单并且运行会更快些。

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

原文地址:https://www.cnblogs.com/baxianhua/p/8423385.html

时间: 2024-10-11 19:10:22

Python: 字符串开头或结尾匹配str.startswith(),str.endswith()的相关文章

轻松python文本专题-字符串开头或者结尾匹配

场景: 字符串开头或者结尾匹配,一般是使用在匹配文件类型或者url 一般使用startwith或者endwith >>> a='http://blog.csdn.net/raylee2007' >>> a.startswith ('http') True 注意:这两个方法里面的参数可以是str,也可以是元组,但是不可以是列表和字典 >>> a='http://blog.csdn.net/raylee2007' >>> a.starts

原生jS之-去掉字符串开头和结尾的空字符

怎么解决这个问题?? 思路就是我们利用正则匹配到所谓的空格,然后替换为空字符,我们要用到的是str的replace API 代码如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 &

Python-字符串开头或结尾匹配

startswith() 和 endswith() 方法提供了一个非常方便的方式去做字符串开头和结尾的检查. 1.查看指定目录下的所有文件名 >>> import os >>> filenames = os.listdir('I:\PythonTest') >>> filenames ['111.csv', '111.xlsx', '111.xml', '123.txt', '123.xlsx', '123123.xml', '123123.xml.b

【trim()】去掉字符串开头和结尾的空格,防止不必要的空格导致的错误。

去掉字符串开头和结尾的空格,防止不必要的空格导致的错误. public static void main(String arg[]){ String a=" abc"; String b="abc"; System.out.println(b.equals(a)); a=a.trim();//去掉字符串中的空格 System.out.println(a.equals(b)); }

python_如何判断字符串a以某个字符串开头或结尾?

案例: 某文件系统目录下有一系列文件: 1.c 2.py 3.java 4.sh 5.cpp ...... 编写一个程序,给其中所有的.sh文件和.py文件加上可执行权限 如何解决这个问题? 先获取目录下文件 通过startswith() 和endswith()方法判断是否以某个字符结尾,列表解析留下满足条件的文件名 迭代列表,给对应的文件赋予权限 # !/usr/bin/python3 import os import stat # 获得当前文件下目录 file_l = os.linesdir

Python 字符串中 startswith()方法

Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False.如果参数 beg 和 end 指定值,则在指定范围内检查. str.startswith(str, beg=0,end=len(string)); #!/usr/bin/python str = "this is string example....wow!!!"; print str.startswith( 'this' ); print str.star

【Python基础学习篇九】Python字符串

一.字符串的操作 字符串是Python的一种基本类型,字符串的操作包括字符串的格式化.字符串的截取.过滤.合并.查找等操作. 二.字符串的格式化 Python将若干值插入到带有"%"标记的字符串中,从而可以动态的输出字符串. 字符串的格式化语法如下: "% s" % str1 "%s %s" % (str1,str2) 例子: #!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7

python字符串操作函数和string模块代码分析

原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html python的字符串属性函数 字符串属性方法: >>> str='string learn' >>> dir(str) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute_

Python 字符串操作及string模块使用

python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: python的字符串属性函数 python的string模块 1.字符串属性方法操作: 1.>字符串格式输出对齐 1 2 3 4 5 6 7 8 9 10 11 >>> str = "Python stRING" >>> print str.center(20)       #生成20个字符长度,str排中间    Python stRING        &g