写点什么

【Python 技能树共建】字符串方法

作者:梦想橡皮擦
  • 2022 年 6 月 07 日
  • 本文字数:3810 字

    阅读完需:约 13 分钟

Python 字符串方法是什么

Python 字符串是 Python 内置的一种数据类型,本篇博客要学习的内容就是字符串对象的方法。


先来学习第一个知识点,Python 字符串,字符串是一个编程名词,翻译过来就是字符组成的串(跟没说一样)


在 Python 中,用引号来表示字符串,例如 双引号 ",单引号 ',还有一个奇葩的三引号 """,对应的三单引号 '''


所以下述代码都是在 声明 一个字符串。


name = "橡皮擦"name = '橡皮擦'name = """橡皮擦"""name = '''橡皮擦'''
复制代码


此时你应该尝试输入一下上述代码,找找编程的感觉,如果你能得到如下几个结论,证明水平还不错。


  • 引号都是成对出现的,前面一个后面一个;

  • 单引号对应单引号,双引号对应双引号,三引号对应三引号;

  • 所有引号都是在英文模式下输入的,不能用中文的引号。


字符串会伴随我们的整个编程生涯,几乎每段代码都会碰到,因此咱们将其放在一开始就进行讲解。

怎么用

截止目前,你只接触到了 Python 字符串的概念,那你来看一下 '1' 是字符串吗?答案肯定是,因为 1 被单引号包裹起来了。


既然字符串是一个字符的串,那你就可以把它当成糖葫芦串,你可以对糖葫芦做什么,就能对字符串做什么,例如吃第一个,吃最后一个,吃中间的 2 个,在头上插入一个山楂,在尾部插入一个山楂,数数山楂的数量……


这些对应到 Python 字符串中,就是各种编程语法,编程概念,咱们一起翻译翻译。


我有一个字符串(糖葫芦),我要吃第一个


tang_hu_lu = "都说冰糖葫芦儿酸" # 声明字符串print(tang_hu_lu) # 打印输出字符串print(tang_hu_lu[0]) # 打印字符串的第一个字符
复制代码


注意代码都是在 jupyter 中进行编写,然后点击运行实现效果,运行的快捷键是 shift+enter


又是一段代码,里面又涉及了很多编程概念,例如 tang_hu_lu 你已经知道它是一个变量了,但是 Python 变量是有命名规范的,例如 1_a 就是错误的,命名规范是啥呢?学习建议是直接搜索,只有一个原则需要告诉你,就是命名尽量有含义,哪怕你用拼音。


# 表示注释,相当于备注的意思,写在 # 后面的内容不会被 Python 软件 执行。tang_hu_lu[0] 这里就有趣了,在变量名称后面跟了一个中括号[],并且在里面写了一个数字 0,它表示取这个串里面的第一个字符,在编程语言中,报数一般从 0 开始,也就是 0 表示第一位,是不是又有疑问了,为啥这么安排?


知道二进制不?二进制用 01 表示,所以从 0 开始数。


取第一个字符咱们已经会了,那最后一个呢


tang_hu_lu = "都说冰糖葫芦儿酸" # 声明字符串print(tang_hu_lu) # 打印输出字符串print(tang_hu_lu[-1]) # 打印字符串的最后一个字符print(tang_hu_lu[7]) # 打印字符串的最后一个字符
复制代码


上述代码就实现了,注意中括号里面的数字 [-1] 就是倒着数最后一个,当然你可以顺着数,数到 7 就是第八个山楂了,这里尝试把 7 修改成 8 ,看一下会报什么错误吧。



到这里就不得不抛出一个新的名词了,索引,刚才中括号中的数字就是 索引值,又是一个新概念,这就是编程。


字符串的第一个和最后一个你都能获取到了,吃中间的怎么办


tang_hu_lu = "都说冰糖葫芦儿酸" # 声明字符串print(tang_hu_lu) # 打印输出字符串print(tang_hu_lu[2:4]) # 输出冰糖print(tang_hu_lu[3:5]) # 输出糖葫
复制代码


注意中括号扩展了,变成了 2 个数字,中间还有一个英文的冒号,此时一定要对比着原字符串进行学习。


- 都说冰糖葫芦儿酸- 0 1 2 3 4 5 6 7
复制代码


看好各个的位置


  • [2:4] 输出冰糖,分别对应索引 2,索引 3 位置的字符;

  • [3:5] 输出糖葫,分别对应索引 3,索引 4 位置的字符;


[0:6] 你知道输出什么了吗?能说出来,恭喜你,Python 字符串切片你已经掌握 90%了,想不到吧,又是一个新概念,切片,多么形象!

字符串扩展方法

字符串除了切片用法以外,还可以使用一个新的概念,叫做 对象的方法,在 Python 中有一个说法,叫做万物皆对象(对象的概念我们在后文展开学习,现在知道这么回事即可),例如现在有一个字符串,内容是 "都说冰糖葫芦儿酸"


先看代码


my_str = "都说冰糖葫芦儿酸"a = my_str.find("糖")print(a) # 输出内容为 3
复制代码


find() 方法


上述代码中,在字符串变量 my_str 的后面增加一段代码 .find("糖"),其中 .find() 就是一个字符串对象的方法,它的用途你顺着刚才的代码在细琢磨,就能知道,是查找 "糖" 这个小字符串在大字符串中的索引值。


同理,还有哪些需要掌握的字符串对象方法呢?


my_str = "AaBbCcDd"new_my_str = my_str.title()print(new_my_str) # Aabbccdd
复制代码


title() 方法


.title() 方法表示将字符串首字母大写


my_str = "AaBbCcDd"new_my_str = my_str.upper()print(new_my_str) # AABBCCDD
复制代码


**upper() 方法和 lower() 方法 **


.upper() 方法表示将字符串全部大写,全部小写是 .lower()


字符串去除左右两端的空格。


my_str = " AaBbCcDd "new_my_str = my_str.strip()print(new_my_str)
复制代码


除了这些,字符串对象的方法还有很多,但是不需要记忆,你需要去搜索一些相关的博客进行阅读,搜索关键字为 Python 字符串方法,然后看上几篇博客,最终得到下面这个结论:


“哦~字符串对象有这些方法,可以大小写转换,可以去除空格,可以检索字符串,可以统计字符出现次数,还能判断字符串中字符内容……”

子串搜索相关方法

count() 方法语法格式如下所示:


my_str.count(sub_str[, start[, end]])
复制代码


返回字符串 my_str 中子串 sub_str 出现的次数,可以指定从开始(start)计算到结束(end)。


print('abcaaabbbcccdddd'.count('a'))
复制代码


endswith()和 startswith()方法原型如下


my_str.endswith(suffix[, start[, end]])my_str.startswith(prefix[, start[, end]])
复制代码


endswith() 检查字符串 my_str 是否以 suffix(可以是一个元组) 结尾,返回布尔值的 True 和 False。startswith() 用来判断字符串 my_str 是否是以 prefix 开头。


find(),rfind()和 index(),rindex()函数原型如下所示:


my_str.find(sub[, start[, end]])my_str.rfind(sub[, start[, end]])my_str.index(sub[, start[, end]])my_str.rindex(sub[, start[, end]])
复制代码


find() 搜索字符串 my_str 中是否包含子串 sub,包含返回 sub 的索引位置,否则返回"-1"。


index()find() 不同点在于当找不到子串时,抛出 ValueError 错误。

替换相关方法

replace()


my_str.replace(old, new[, count])
复制代码


将字符串中的 old 替换为 new 字符串,如果给定 count,则表示只替换前 count 个 old 子串。

分割和合并

split()、rsplit()和 splitlines()


my_str.split(sep=None, maxsplit=-1)my_str.rsplit(sep=None, maxsplit=-1)my_str.splitlines([keepends=True])
复制代码


split() 根据 sep 对 my_str 进行分割,maxsplit 用于指定分割次数。


splitlines() 用来分割换行符。


join()


my_str.join(iterable)
复制代码


将可迭代对象中的元素使用字符 my_str 连接起来。

修剪

strip()、lstrip()和 rstrip()


my_str.strip([chars])my_str.lstrip([chars])my_str.rstrip([chars])
复制代码


分别是移除左右两边、左边、右边的字符 char。默认移除空白(空格、制表符、换行符)。

内置函数

学到这里,还有一个概念要接触一下,内置函数,现在的需求如下所示,我们需要统计有多少个糖葫芦,即字符串有多少个字符,先看代码,如下所示:


my_str = " AaBbCcDd "len_my_str = len(my_str)print(len_my_str) # 统计到了 10个
复制代码


上述代码中的 len() 就是一个 Python 内置函数,它表示统计长度,注意看内置函数和刚才学到的方法之间的差异,len() 函数,前面并没有对象去调用它,调用 其实也是一个编程概念,就是那个 . 符号。


统计过程,你也会注意到 " AaBbCcDd " 算上空格,恰好是 10 个 字符,所以得出空格也是字符,这个基本认知。


后续我们还会学习更多的内置函数,接下来在学习 2 个,这两个有助于提高编程效率。


第一个是 help(),该函数用来查看编程对象的帮助手册,例如下述代码


my_str = " AaBbCcDd "help(my_str )
复制代码


不过该代码无法在 jupyter 中运行,会得到如下结果



这里可以直接输入 help(),进入手册模式,在进行查询即可。



在文本框输入 str,就可以获取到帮助手册中的相关内容,也就是获取到了字符串对象的相关方法。


第 3 个要学习的内置函数是 dir(),使用该函数可以直接把对象支持的方法全部输出。


my_str = " AaBbCcDd "print(dir(my_str))
复制代码



jupyter 的使用过程中,如果出现了 In [*],表示命令没有执行完毕,需要点击菜单栏的 Kernel,然后重启服务。



字符串格式化

在 Python 中,字符串格式化有三种方式,分别为 % 占位符格式化,format() 方法格式化,以及 f-string,重点学习的是第二种和第三种方式进行格式化,例如下述代码:


my_str = "小爱同学,今天天气"answer_str = "今天的天气是: {}".format("晴")print(answer_str)
复制代码


第二个字符串中出现了一个大括号 {},然后通过 format() 函数对其进行了填充,同理,大括号可以出现多个,也可以有名称,例如下述代码:


# 多个大括号,format() 方法中需要多个值进行填充my_str = "小爱同学,今天天气"answer_str = "今天上午的天气是: {},下午的天气是:{}".format("晴","多云")print(answer_str)# 大括号中有占位符my_str = "小爱同学,今天天气"answer_str = "今天上午的天气是: {shangwu},下午的天气是:{xiawu}".format(shangwu="晴",xiawu="多云")print(answer_str)
复制代码


在使用占位符的时候注意下,前后要一致,否则会出错的。


上述代码其实用到了函数相关支持,这些随着我们的学习,都将逐步展开,当下最有效的学习方式,就是临摹一遍代码啦。

发布于: 刚刚阅读数: 4
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
【Python技能树共建】字符串方法_6月月更_梦想橡皮擦_InfoQ写作社区