Python的友好在于提供了非常好强大的功能函数模块,对于字符串的使用,同样提供许多简单便捷的字符串函数。Python 字符串自带了很多有用的函数,在字符串函数之前先介绍一个非常实用的dir()内置函数,因为对每一个初学者还是大佬级别的python程序员,都不能完全记住所有方法。而该函数可以查看所有这些函数,可调用 dir 并将参数指定为任何字符串(如 dir("")),其返回值包括字符串可以使用的变量、方法和定义的类型。

>>> dir("")
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__','__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

其也提供对功能函数的查询,比如经常使用的math()函数,所以无论是对后面所阐述的字符串函数还是其它函数,我们都可以用dir()内置函数来了解其它函数的类型、定义等等。下面所讲述的字符串函数会区分其不同功能来分开介绍,其函数的实现功能大致包含以下六个功能:索引特殊字符串、设置字符格式、修改字符串大小写、查看字符串特定格式、替换特定字符串、拆分特定字符串。

1 搜索字符串函数

假如我们需要在一段字符串中查找特定的子串时,通常涉及以下几个函数:

函数名

返回值

string.find(i)

如果没有找到子串i,则返回 -1;否则 返回 子串i 在 string 中的起始位置

string.rfind(i)

与 find 相同,但从右往左搜索

string.index(i)

与 find 相同,但如果在 string 中找不到 i, 则引发 ValueError 异常

string.rindex(i)

与 index 相同,但从右往左搜索

虽然这几个函数都实现了搜索特定字符串的功能,但还是包含一些区别的:

1. 函数 index 和 find 之间的差别在于没有找到指定子串时的情形 ,示例如下:

函数index会抛出异常 ValueError,而如果没有找到指定的子串,函数find将返回 -1。

2.字符串搜索函数通常从左往右(从开头往末尾)搜索,但以 r 打头的函数从右往左搜索。例如:

可以看到, 函数 find 和 index 返回传入字符串第一次出现时的起始位置索引,而 rfind 和 rindex 返回传入字符串最后一次出现时的起始位置索引。

2 设置字符串格式函数

下表列出了一些设置字符串格式的函数:

函数名

返回值

string.center(i)

返回一个原字符串居中,并使用空格填充至长度 i 的新字符串

string.ljust(i)

返回一个原字符串左对齐,并使用空格填充至长度 i 的新字符串

string.rjust(i)

返回一个原字符串右对齐,并使用空格填充至长度 i 的新字符串

string.format(i)

提供变量,格式化字符串(python2.6后新增)

center(),ljust()和rjust()函数在日常用的使用很少,反倒是Python2.6以后的format()受到了广大字符串处理者的使用。使用format函数需要给它提供变量或者值,一个简单的例子:字符串中的 {0} 和 {1} 引用 format 的参数:它们将被替换为相应字符串或变量的值。也可以使用关键字参数的名称,

>>> '{0} like eat {1}'.format('Wangzi','banana')
'Wangzi like eat banana'
>>> '{who} {id} is Linda'.format(who='My',id='name')
'My name is Linda'

这是一些比较简单的例子,还有更多细节方面的使用可以参考string — Common string operations — Python 3.10.1 documentation。下面举一个在抓取jmx数值的实际使用案例。在大数据组件使用过程中,我们通常抓取jmx接口的数据获取详情,然后将数据接到相关的展示系统中来监控和展示:例如我们需要抓取一个队列任务扥id,使用者,运行时间等指标值(此处IP做了处理,有问题可以咨询博主)。

import json
import urllib3
import redef get_ative_resourcemanager(rm1, rm2):http = urllib3.PoolManager()rm_list = [rm1, rm2]for resourcemanager in rm_list:url = 'http://{0}/ws/v1/cluster/info'.format(resourcemanager)response = http.request('GET', url)data = json.loads(response.data)ha_state = data['clusterInfo']['haState']if ha_state == "ACTIVE":return resourcemanager
'''Conversion time function'''
# 毫秒级转化为hour/minutes
def conver_time(allTime):hours = (allTime/(60*60*1000))return hours'''get active resourcemanager yarn application metrics'''
def get_queue_metrics():active_resoucemanager = get_ative_resourcemanager('ip1:port','ip2:port')http = urllib3.PoolManager()url = 'http://{0}/ws/v1/cluster/apps'.format(active_resoucemanager)response = http.request('GET', url)data = json.loads(response.data).get('apps').get('app')length = len(data)for i in range(length):'''判断application状态'''application_state = data[i]['state']queue = data[i]['queue']queue_name = re.findall(r'root.*',queue,re.IGNORECASE)#print(mobdi_queue)if (application_state == 'RUNNING' or application_state == 'ACCEPTED'):if queue_name:id_metric = data[i]['id']user_metric = data[i]['user']queue_metrics = data[i]['queue']elapsed_time = data[i]['elapsedTime']runtime_metric = conver_time(elapsed_time)print(str(id_metric) + " " + str(user_metric) + " " + str(queue_metrics) + " " + str(runtime_metric))if __name__ == '__main__':''''''get_queue_metrics()

执行结果:

3 改变字符串大小写函数

提供改变字符串大小写的函数有以下五个函数:

函数名

返回值

string.capitalize()

字符串的第一个字符大写

string.lower()

将 string 中所有大写字符转为小写

string.upper()

将 string 中的小写字母转为大写

string.swapcase()

转变 string 中的大小写

string.title()

返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写

Python 提供了各种修改字母大小写的函数,如上表。但注意标红的地方,Python并没有修改字符串,而是在这几个函数中,创建并返回一个新字符串,并没有真正修改string源字符串。

4 选定字符串函数

选定字符串函数通常用于删除字符串开头或者末尾多余的字符串,具体有striip,lstrip和rstrip三个函数。

函数名

返回值

string.strip(i)

从string开头和末尾删除所有包含在字符串i中的字符

string.lstrip(i)

从string开头(左端)删除所有包含在字符串i中的字符

string.restrip(i)

从string末尾(右端)删除所有包含在 字符串i中的字符

1.如果不加字符串,将删除空白字符串:

2.删除字符串情况:

5 拆分字符串函数

Python提供了以下几个拆分字符串的函数,主要将字符串拆分成多个子串。

函数名

返回值

string.partition(i)

把string 拆分为三个字符串(head,i和tail),其中 head为i前面的子串, 而 tail 为i后面的子串

string. rpartition(i)

与 partition 相同,但从 string 的右端开始搜索 i

string.split(i)

以 i 为分隔符,将 string 划分成一系列子串,并返回一个由这些子串组成的列表

string.rsplit(i)

与 split 相同,但从 striing 的右端开始搜索 i

string.splitlines(i)

返回一个由 string 中的各行组成的列表

注意示例中存在string和string1两个字符串,函数 partition 和 rpartition 将字符串拆分为3部分,这两个函数总是返回一个这样的值:由3个字符串组成, 形式为 (head, sep, tail) ;而函数 split 以指定字符串为分隔符,将 字符串划分为一系列子串,返回一个字符串列表,列表总是分别以 [ 和 ] 打头和结尾,并用逗号分隔元素。splitlines函数按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,使用很少,而且会自行判断字符串是否包含换行符。

6 替换字符串函数

Python内置两个字符串替换函数,包括:

函数名

返回值

string.replace(old, new)

将 string 中的每个 old 替换为 new

string.expandtabs(i)

将 string 中的每个制表符替换为 n 个 空格

小练习

结合之前的Python字符串使用以及Python本身内置的字符串处理函数,做个小练习,用代码实现自定义的replace_替换函数,实现会在下次的文章中实现。

Python字符串函数使用详解相关推荐

  1. python while函数_详解python while 函数及while和for的区别

    1.while循环(只有在条件表达式成立的时候才会进入while循环) while 条件表达式: pass while 条件表达式: pass else: pass 不知道循环次数,但确定循环条件的时 ...

  2. python 减法函数_详解 Python 的二元算术运算,为什么说减法只是语法糖?

    大家对我解读属性访问的博客文章反应热烈,这启发了我再写一篇关于 Python 有多少语法实际上只是语法糖的文章.在本文中,我想谈谈二元算术运算. 具体来说,我想解读减法的工作原理:a - b.我故意选 ...

  3. python| map()函数应用详解

    map()函数是 Python 内置的高阶函数,它接收一个函数 f 和一个list(或多个 list,但list个数与f函数的参数个数必须相等),并通过把函数 f 依次作用在 list 的每个元素上, ...

  4. [转载] python| map()函数应用详解

    参考链接: Python map函数 map()函数是 Python 内置的高阶函数,它接收一个函数 f 和一个list(或多个 list,但list个数与f函数的参数个数必须相等),并通过把函数 f ...

  5. python字符串格式化深入详解(四种方法)

    前言:本文详细整理了python字符串格式化的几种方式. 一.使用 % 符号来进行格式化 格式符为真实值预留位置,并控制显示的格式.格式符可以包含有一个类型码,用以控制显示的类型,如下: %s    ...

  6. python with函数_详解Python中startswith()函数与endswith函数的使用方法

    下面小编就为大家带来一篇老生常谈Python startswith()函数与endswith函数.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 函数:startswit ...

  7. python回调函数实例详解_Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  8. js去掉前后空格的函数_MySQL 中常见的字符串函数应用详解

    在前面若干章节中,我们介绍了SQL的基础与高阶语法,接下来,我们将分四个章节,介绍MySQL中常见的函数应用,大致分为如下几个章节: MySQL 字符串函数 MySQL 数字函数 MySQL 日期函数 ...

  9. python字符串转date_详解python 字符串和日期之间转换 StringAndDate

    python 字符串和日期之间转换 StringAndDate 这里给出实现代码,直接可以使用.大家可以看下. 实例代码: ''''' Created on 2013-7-25 @author: Ad ...

  10. C语言字符串函数的详解

    一.字符串具体有哪些 求字符串的长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 字符 ...

最新文章

  1. 软件工程个人作业02
  2. Apache提示You don‘t have permission to access / on this server问题解决
  3. [SQL SERVER][Memo]篩選索引
  4. opencv编译python库_linux 下编译安装 opencv-python
  5. CSS面试总结(大致)
  6. java ee jsp_EE JSP:Servlet的反向外套
  7. 0c-38-ARC快速入门
  8. linux安装酷q机器人,docker一键安装酷Q搭建个人QQ机器人
  9. word批量转换pdf
  10. Icode编程>>>图形化编程>>>1级训练场>>>重复执行练习【1】
  11. 如果这篇文章说不清epoll的本质,那就过来掐死我吧!
  12. IDEA git 切换分支注意事项
  13. 高频信号发生器设计—电感三点式振荡电路
  14. 大数据Python基础学习——练习(二)
  15. 尼姆游戏-取硬币游戏
  16. ChemOffice Suite 2018 18.1.2.18
  17. oracle删除大量数据
  18. go 语言zip压缩包 读取
  19. centsos7网络连接激活失败_CenOS 7初始安装后无网络的解决办法
  20. @RequiredArgsConstructor 代替@AutoWired注解

热门文章

  1. win10 账户密码忘记的解决办法
  2. Redis 常见面试题(带答案)110道
  3. 小程序源码:朋友圈集赞万能截图生成器-多玩法安装简单
  4. matlab代码运行教程(如何运行下载的代码)
  5. Python调整图片的文件大小
  6. vue项目移动端、PC端适配方案
  7. NLP--解决Mac OS 10.14.4Python下pip install pyhanlp 失败
  8. 买腾讯云服务器怎么选择
  9. 塑料周转筐生的材料配方详解
  10. Hyper-V虚拟光纤通道