Python API快餐教程(1) - 字符串查找API
字符串处理相关API
字符串是7种序列类型中的一种。
除了序列的操作函数,比如len()来求字符串长度之外,Python还为字符串提供丰富到可以写个编辑器的API.
查找类API
首先,下面的查找API都是为了查找位置,或者查一共有几次这样的操作。
如果只是想判断一个字符串是不是另一个字符串的子串的话,使用序列的in运算符就可以了。
例:
str1 = "hahahahaha,heiheihei"
if 'haha' in str1:
print('haha is a substring of '+str1)
else:
print('haha is NOT a substring of '+str1)
数数有多少个匹配的字符串 - count函数
原型:str.count(sub[, start[, end]])
* sub:要查找的子字符串
* start:起始位置
* end:结束位置
字符串的count函数可以数出来有多少次匹配,我们看个例子,有5个ha和3个hei
str1 = "hahahahaha,heiheihei"
print(str1.count('ha'))
print(str1.count('haha'))
输出为5和2.
haha只能匹配两次。
再加上扩展参数:
print(str1.count('ha',1))
print(str1.count('ha',0,5))
不抛异常的查找 find和rfind
find函数的行为是,如果能找到,则返回在序列中的坐标,如果找不到,则返回-1. rfind是从右向左查找。我们来看例子:
print(str1.find('haha'))
print(str1.rfind('haha'))
输出值为0和6.
找不到的例子:
print(str1.find('hoho'))
print(str1.rfind('hi'))
输出值都是-1.
完整形式:
* str.find(sub[, start[, end]])
* str.rfind(sub[, start[, end]])
会抛异常的查找:index和rindex
index和rindex的功能与find和rfind基本上一致,除了在找不到时会抛出ValueError异常而不是返回-1.
例:
>>> str1 = "hehe"
>>> str1.index('ha')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
所以我们需要加try…except语句来处理之:
try:
str1.index('hoho')
except ValueError:
print('hoho cannot be found in '+str1)
从头查找和从尾查找 startswith, endswith
有时候,我们希望做从头匹配或者匹配尾部。这时候就要用到startswith函数和endswith函数。例:
print(str1.startswith('ha'))
print(str1.endswith('hei'))
这两个返回值均为True.
如果需要更复杂的匹配,还是需要正则表达式。与Java等语言不同,Python中的正则表达式有专门的模块,字符串的API不负责这个事情。
小结
- 判断字符串是不是在别一个串中能找到:in
- 判断是否左匹配:startswith
- 判断是否右匹配:endswith
- 数数能匹配多少次:count
- 不抛异常的求匹配位置:find,rfind
- 会抛异常的求匹配位置:index,rindex
Python API快餐教程(1) - 字符串查找API的更多相关文章
- Python学习入门教程,字符串函数扩充详解
因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习 ...
- 【实测】Python 和 C++ 下字符串查找的速度对比
完整格式链接:https://blog.imakiseki.cf/2022/03/07/techdev/python-cpp-string-find-perf-test/ 背景 最近在备战一场算法竞赛 ...
- JAVASE02-Unit01: API文档 、 字符串基本操作
API文档 . 字符串基本操作 文档注释 package day01; /** * 文档注释只能定义在三个地方: * 类,方法,常量 * * 文档注释是功能注释,用来说明功能作用 * 在类上使用的目的 ...
- [Python][flask][flask-login]关于flask-login中各种API使用实例
本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了 ...
- python 全栈开发,Day95(RESTful API介绍,基于Django实现RESTful API,DRF 序列化)
昨日内容回顾 1. rest framework serializer(序列化)的简单使用 QuerySet([ obj, obj, obj]) --> JSON格式数据 0. 安装和导入: p ...
- C# 窗体常用API函数 应用程序窗体查找
常用的处理窗体的API函数如下(注意:API函数必须放在窗体中...): 使用C#语言,要引用DllImport,必须要添加using System.Runtime.InteropServices命名 ...
- C中级 MariaDB Connector/C API 编程教程
引言 - 环境搭建 首先开始环境搭建. 主要在Window 10 + Visual Studio 2015 上构建使用 mariadb connector/c api 进行数据操作开发. 为什么选择在 ...
- Python 极简教程(八)字符串 str
由于字符串过于重要,请认真看完并保证所有代码都至少敲过一遍. 对于字符串,前面在数据类型中已经提到过.但是由于字符串类型太过于常用,Python 中提供了非常多的关于字符串的操作.而我们在实际编码过程 ...
- Azure Application Insights REST API使用教程
本文是Azure Application Insights REST API的简单介绍,并会包含一个通过Python消费API的示例/小工具. 新加入的team中的一项工作是制作日常的运维报表,制作方 ...
随机推荐
- zeptojs库解读3之ajax模块
对于ajax,三步骤,第一,创建xhr对象:第二,发送请求:第三,处理响应. 但在编写过程中,实际中会碰到以下问题, 1.超时 2.跨域 3.后退 解决方法: 1.超时 设置定时器,规定的时间内未返回 ...
- Linux——用户管理简单学习笔记(一)
Linux用户分为三种: 1:超级用户(root,UID=0) 2:普通用户(UID 500-60000) 3:伪用户(UID 1-499) 伪用户: 1.伪用户与系统和程序服务相关 :nbin.d ...
- python 元组元素计数
#create a tuple tuplex = , , , , , , , , print(tuplex) #return the number of times it appears in the ...
- Cassandra学习笔记
CASSANDRA在工作中用过,但是用的项目少,能用却了解的不全面.今天来稍加学习下: http://zqhxuyuan.github.io/2015/10/15/Cassandra-Daily/ ...
- [ios]sqlite轻量级数据库学习连接
SQLLite (一)基本介绍 http://blog.csdn.net/lyrebing/article/details/8224431 SQLLite (二) :sqlite3_open, sql ...
- angular5 路由变化监听
1.路由监听 //监听路由变化this.router.events .filter(event => event instanceof NavigationEnd) .map(() => ...
- Solaris 11, gcc 的安装
注意点在于, 头文件在另外一个包system/header里,需要另外安装 pkg pkg install system/header
- English trip -- Phonics 2 元音字母a
xu言: 欲速则不达,如果这是你生命中最后一天.你还愿意花这么多精力继续坚持你现在做的事吗?如果答案是否定的,那么你需要改变了! What makes a word? 单词构成 Word 单词: ...
- Android之ToolBar的使用
Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google 非常推荐大家使用 Toolbar 来作为Android客户端的导航栏,以此来 ...
- python-day14--带参数的装饰器+多个装饰器装饰同一个函数
1.# 带参数的装饰器def f1(flag): def f2(func): def inner(*args,**kwargs): if flag: '''执行函数之前要做的''' r=func(*a ...