【Python 技能树共建】字符串方法
Python 字符串方法是什么
Python 字符串是 Python 内置的一种数据类型,本篇博客要学习的内容就是字符串对象的方法。
先来学习第一个知识点,Python 字符串,字符串是一个编程名词,翻译过来就是字符组成的串(跟没说一样)
在 Python 中,用引号来表示字符串,例如 双引号 "
,单引号 '
,还有一个奇葩的三引号 """
,对应的三单引号 '''
。
所以下述代码都是在 声明 一个字符串。
此时你应该尝试输入一下上述代码,找找编程的感觉,如果你能得到如下几个结论,证明水平还不错。
引号都是成对出现的,前面一个后面一个;
单引号对应单引号,双引号对应双引号,三引号对应三引号;
所有引号都是在英文模式下输入的,不能用中文的引号。
字符串会伴随我们的整个编程生涯,几乎每段代码都会碰到,因此咱们将其放在一开始就进行讲解。
怎么用
截止目前,你只接触到了 Python 字符串的概念,那你来看一下 '1'
是字符串吗?答案肯定是,因为 1
被单引号包裹起来了。
既然字符串是一个字符的串,那你就可以把它当成糖葫芦串,你可以对糖葫芦做什么,就能对字符串做什么,例如吃第一个,吃最后一个,吃中间的 2 个,在头上插入一个山楂,在尾部插入一个山楂,数数山楂的数量……
这些对应到 Python 字符串中,就是各种编程语法,编程概念,咱们一起翻译翻译。
我有一个字符串(糖葫芦),我要吃第一个
注意代码都是在
jupyter
中进行编写,然后点击运行实现效果,运行的快捷键是shift+enter
。
又是一段代码,里面又涉及了很多编程概念,例如 tang_hu_lu
你已经知道它是一个变量了,但是 Python 变量是有命名规范的,例如 1_a
就是错误的,命名规范是啥呢?学习建议是直接搜索,只有一个原则需要告诉你,就是命名尽量有含义,哪怕你用拼音。
#
表示注释,相当于备注的意思,写在 #
后面的内容不会被 Python 软件 执行。tang_hu_lu[0]
这里就有趣了,在变量名称后面跟了一个中括号[]
,并且在里面写了一个数字 0
,它表示取这个串里面的第一个字符,在编程语言中,报数一般从 0 开始,也就是 0
表示第一位,是不是又有疑问了,为啥这么安排?
知道二进制不?二进制用 0
,1
表示,所以从 0
开始数。
取第一个字符咱们已经会了,那最后一个呢
上述代码就实现了,注意中括号里面的数字 [-1]
就是倒着数最后一个,当然你可以顺着数,数到 7
就是第八个山楂了,这里尝试把 7
修改成 8
,看一下会报什么错误吧。
到这里就不得不抛出一个新的名词了,索引,刚才中括号中的数字就是 索引值,又是一个新概念,这就是编程。
字符串的第一个和最后一个你都能获取到了,吃中间的怎么办。
注意中括号扩展了,变成了 2 个数字,中间还有一个英文的冒号,此时一定要对比着原字符串进行学习。
看好各个的位置
[2:4]
输出冰糖,分别对应索引 2,索引 3 位置的字符;[3:5]
输出糖葫,分别对应索引 3,索引 4 位置的字符;
那 [0:6]
你知道输出什么了吗?能说出来,恭喜你,Python 字符串切片你已经掌握 90%了,想不到吧,又是一个新概念,切片,多么形象!
字符串扩展方法
字符串除了切片用法以外,还可以使用一个新的概念,叫做 对象的方法,在 Python 中有一个说法,叫做万物皆对象(对象的概念我们在后文展开学习,现在知道这么回事即可),例如现在有一个字符串,内容是 "都说冰糖葫芦儿酸"
。
先看代码
find() 方法
上述代码中,在字符串变量 my_str
的后面增加一段代码 .find("糖")
,其中 .find()
就是一个字符串对象的方法,它的用途你顺着刚才的代码在细琢磨,就能知道,是查找 "糖"
这个小字符串在大字符串中的索引值。
同理,还有哪些需要掌握的字符串对象方法呢?
title() 方法
.title()
方法表示将字符串首字母大写
**upper() 方法和 lower() 方法 **
.upper()
方法表示将字符串全部大写,全部小写是 .lower()
字符串去除左右两端的空格。
除了这些,字符串对象的方法还有很多,但是不需要记忆,你需要去搜索一些相关的博客进行阅读,搜索关键字为 Python 字符串方法
,然后看上几篇博客,最终得到下面这个结论:
“哦~字符串对象有这些方法,可以大小写转换,可以去除空格,可以检索字符串,可以统计字符出现次数,还能判断字符串中字符内容……”
子串搜索相关方法
count() 方法语法格式如下所示:
返回字符串 my_str
中子串 sub_str
出现的次数,可以指定从开始(start
)计算到结束(end
)。
endswith()和 startswith()方法原型如下
endswith()
检查字符串 my_str 是否以 suffix(可以是一个元组) 结尾,返回布尔值的 True 和 False。startswith()
用来判断字符串 my_str 是否是以 prefix 开头。
find(),rfind()和 index(),rindex()函数原型如下所示:
find()
搜索字符串 my_str 中是否包含子串 sub,包含返回 sub 的索引位置,否则返回"-1"。
index()
和 find()
不同点在于当找不到子串时,抛出 ValueError 错误。
替换相关方法
replace()
将字符串中的 old 替换为 new 字符串,如果给定 count,则表示只替换前 count 个 old 子串。
分割和合并
split()、rsplit()和 splitlines()
split()
根据 sep 对 my_str 进行分割,maxsplit 用于指定分割次数。
splitlines()
用来分割换行符。
join()
将可迭代对象中的元素使用字符 my_str
连接起来。
修剪
strip()、lstrip()和 rstrip()
分别是移除左右两边、左边、右边的字符 char。默认移除空白(空格、制表符、换行符)。
内置函数
学到这里,还有一个概念要接触一下,内置函数,现在的需求如下所示,我们需要统计有多少个糖葫芦,即字符串有多少个字符,先看代码,如下所示:
上述代码中的 len()
就是一个 Python 内置函数,它表示统计长度,注意看内置函数和刚才学到的方法之间的差异,len()
函数,前面并没有对象去调用它,调用 其实也是一个编程概念,就是那个 .
符号。
统计过程,你也会注意到 " AaBbCcDd "
算上空格,恰好是 10 个 字符,所以得出空格也是字符,这个基本认知。
后续我们还会学习更多的内置函数,接下来在学习 2 个,这两个有助于提高编程效率。
第一个是 help()
,该函数用来查看编程对象的帮助手册,例如下述代码
不过该代码无法在 jupyter
中运行,会得到如下结果
这里可以直接输入 help()
,进入手册模式,在进行查询即可。
在文本框输入 str
,就可以获取到帮助手册中的相关内容,也就是获取到了字符串对象的相关方法。
第 3 个要学习的内置函数是 dir()
,使用该函数可以直接把对象支持的方法全部输出。
在 jupyter
的使用过程中,如果出现了 In [*]
,表示命令没有执行完毕,需要点击菜单栏的 Kernel
,然后重启服务。
字符串格式化
在 Python 中,字符串格式化有三种方式,分别为 %
占位符格式化,format()
方法格式化,以及 f-string
,重点学习的是第二种和第三种方式进行格式化,例如下述代码:
第二个字符串中出现了一个大括号 {}
,然后通过 format()
函数对其进行了填充,同理,大括号可以出现多个,也可以有名称,例如下述代码:
在使用占位符的时候注意下,前后要一致,否则会出错的。
上述代码其实用到了函数相关支持,这些随着我们的学习,都将逐步展开,当下最有效的学习方式,就是临摹一遍代码啦。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/9639837f72fbec9c5b19ad6fd】。文章转载请联系作者。
评论