文章目录
- 【Python学习】字符串 学习笔记
- 一、字符串的定义
- 二、字符串的常用操作
- 1.从字符串中取值和索引
- 2.统计字符串长度
- 3.统计某一个小字符串出现的次数
- 4.获取某一个子字符串出现的位置
- 三、字符串的常用方法总结和分类
- 1.判断类型
- 2.查找和替换
- 3.大小写转换
- 4.文本对齐
- 5.去除空白字符
- 6.拆分和连接
- 四、字符串的切片
【Python学习】字符串 学习笔记
一、字符串的定义
字符串就是一串字符,是编程语言中表示文本的数据类型。在 Python 中可以使用 一对双引号 "
或者 一对单引号 '
定义一个字符串 。
- 在实际开发中,如果字符串内部需要使用
"
,可以使用'
定义字符串;如果字符串内部需要使用'
,可以使用"
定义字符串。
在字符串的定义中,可以使用索引获取一个字符串中指定位置的字符,索引计数从 0 开始。
在字符串中,可以使用 for 循环遍历 字符串中每一个字符。例如:
str1 = '我的外号是"猪猪"'
print(str1)
for char in str1:
print(char)
运行结果:
二、字符串的常用操作
序号 | 关键字/函数/方法 | 说明 |
1 | 字符串[索引] | 从字符串中取单个字符 |
2 | 字符串.index(字符串) | 获取子字符串第一次出现的索引 |
3 | 字符串.count字符串) | 子字符串在大字符串中出现的次数 |
4 | len(字符串) | 获取子字符串在大字符串中的长度 |
话不多说,上代码举例说明使用方法:
提示:ctrl+q可以查看函数用法
1.从字符串中取值和索引
str1 = '我的外号是"猪猪"'
print(str1)
print(str1[2]) # 取值
print(str1.index("我")) # 取索引
运行结果:
2.统计字符串长度
hello_str = "hello hello"
print(len(hello_str))
运行结果:
3.统计某一个小字符串出现的次数
hello_str = "hello hello"
print(hello_str.count("llo"))
print(hello_str.count("abc")) # 大字符串中没有对应的小字符串时不报错,计数为0
运行结果:
4.获取某一个子字符串出现的位置
hello_str = "hello hello"
print(hello_str.index("llo"))
print(hello_str.index("abc")) # 大字符串中没有对应的小字符串时报错
运行结果:
三、字符串的常用方法总结和分类
在 ipython中可以查看字符串能够使用的方法,总结起来有六大类:判断类型、查找和替换、大小写转换、文本对齐、去除空白字符、拆分和连接。
提示:ctrl+q也可以查看方法用法
1.判断类型
方法 | 说明 |
string.isspace() | 如果 string 中只包含空格,则返回 True |
string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True |
string.isalpha() | 如果 string 至少有一个字符并且所有字符都是字母则返回 True |
string.isdecimal() | 如果 string 只包含数字则返回 True,全角数字 |
string.isdigit() | 如果 string 只包含数字则返回 True,全角数字、⑴(表示unicode字符串)、\u00b2(表示平方) |
string.isnumeric() | 如果 string 只包含数字则返回 True,全角数字,汉字数字 |
string.istitle() | 如果 string 是标题化的(每个单词的首字母大写)则返回 True |
string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True |
string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True |
- 对
string.isspace()
的举例:当输入只有空格或输入的是空白字符(\r \t \n和空格)时,返回True,代码和结果如下:
space_str0 = ""
space_str1 = " "
space_str2 = " \n "
print(space_str0.isspace())
print(space_str1.isspace())
print(space_str2.isspace())
- 对于判断数字的三种方法isdecimal、isdigit和isnumeric方法的异同如下:
1.都不能判断小数
2.isdecimal方法只能判断阿拉伯数字,而isdigit和isnumeric方法可以判断unicode字符串(例如:⑴)和\u00b2(表示平方)
3.isnumeric还能判断阿拉伯数字
num_str = "1"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
# 都不能判断小数
num_str = "1.1"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
# isdigit和isnumeric方法可以判断unicode字符串(例如:⑴)和\u00b2(表示平方)
num_str = "⑴"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
# 只有isnumeric能判断阿拉伯数字
num_str = "一千一百"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
运行结果:
2.查找和替换
方法 | 说明 |
string.startswith(str) | 检查字符串是否是以 str 开头,是则返回 True |
string.endswith(str) | 检查字符串是否是以 str 结束,是则返回 True |
string.find(str, start=0, end=len(string)) | 检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 |
string.rfind(str, start=0, end=len(string)) | 类似于 find(),不过是从右边开始查找 |
string.index(str, start=0, end=len(string)) | 跟 find() 方法类似,不过如果 str 不在 string 会报错 |
string.rindex(str, start=0, end=len(string)) | 类似于 index(),不过是从右边开始 |
string.replace(old_str, new_str, num=string.count(old)) | 把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次 |
对string.startswith(str)、string.endswith(str)、string.find(str, start=0, end=len(string))和string.replace(old_str, new_str, num=string.count(old))举例说明:
hello_str = "hello world"
print(hello_str)
# 判断是否以指定字符开始
print(hello_str.startswith("hello"))
print(hello_str.startswith("Hello"))
# 判断是否以指定字符结束
print(hello_str.endswith("world"))
# 查找指定字符串
print(hello_str.find("llo")) # index同样可以查找指定的字符串在大字符串中的索引
print(hello_str.find("abc")) # index指定的字符串不存在会报错,find不会,会返回-1
# 替换字符串
print(hello_str.replace("world","nihao")) # replace方法不会修改原有字符串的内容,会返回一个新的字符串
print(hello_str)
运行结果:
从结果可以看出:
- 在查找指定字符串时,index和find同样可以查找指定的字符串在大字符串中的索引,不同之处在于index指定的字符串不存在会报错,find不会,会返回-1。
- replace方法不会修改原有字符串的内容,会返回一个新的字符串
3.大小写转换
方法 | 说明 |
string.capitalize() | 把字符串的第一个字符大写 |
string.title() | 把字符串的每个单词首字母大写 |
string.lower() | 转换 string 中所有大写字符为小写 |
string.upper() | 转换 string 中的小写字母为大写 |
string.swapcase() | 翻转 string 中的大小写 |
4.文本对齐
方法 | 说明 |
string.ljust(width) | 返回一个原字符串左对齐,并使用空格(全角空格)填充至长度 width 的新字符串 |
string.rjust(width) | 返回一个原字符串右对齐,并使用空格(全角空格)填充至长度 width 的新字符串 |
string.center(width) | 返回一个原字符串居中,并使用空格(全角空格)填充至长度 width 的新字符串 |
5.去除空白字符
方法 | 说明 |
string.lstrip() | 截掉 string 左边(开始)的空白字符 |
string.rstrip() | 截掉 string 右边(末尾)的空白字符 |
string.strip() | 截掉 string 左右两边的空白字符 |
6.拆分和连接
方法 | 说明 |
string.partition(str) | 把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面) |
string.rpartition(str) | 类似于 partition() 方法,不过是从右边开始查找 |
string.split(str="", num) | 以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格 |
string.splitlines() | 按照行(’\r’, ‘\n’, ‘\r\n’)分隔,返回一个包含各行作为元素的列表 |
string.join(seq) | 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
对split方法和join方法举例说明:
poem_str = "登鹳雀楼\t王焕之\t白日依山尽\t\n黄河入海流\t\n欲穷千里目\t\t更上一层楼"
print(poem_str)
# 拆分字符串
poem_list = poem_str.split()
print(poem_list)
# 合并字符串
result = " ".join(poem_list)
print(result)
运行结果:
四、字符串的切片
切片方法适用于 字符串、列表、元组,使用 索引值 来限定范围,从一个大的 字符串中切出小的字符串。列表和元组都是有序的集合,都能够通过索引值获取到对应的数据,字典是一个 无序 的集合,是使用键值对保存数据。
- 使用方法:
字符串[开始索引:结束索引:步长]
注意:
- 指定的区间属于 左闭右开 型
[开始索引, 结束索引)
。从起始位开始,到结束位的前一位结束(不包含结束位本身)。 - 从头开始,开始索引 数字可以省略,冒号不能省略。
- 到末尾结束,结束索引 数字可以省略,冒号不能省略。
- 步长默认为 1,如果连续切片,数字和冒号都可以省略。
举例说明:
num_str = "0123456789"
# 截取从2~ 5位置的字符串
print(num_str[2:6])
# 截取从2~ 末尾的字符串
print(num_str[2:])
# 截取从开始~ 5位置的字符串
print(num_str[0:6])
print(num_str[:6])
print(num_str[:])
# 截取完整的字符串从开始位置,每隔一个字符
print(num_str[::2])
# 截取字符串从索引1开始,每隔一个取一个
print(num_str[1::2])
# 截取从2~ 末尾 - 1的字符串
print(num_str[2:-1])
# 截取字符串末尾两个字符
print(num_str[-2:])
# 字符串的逆序
print(num_str[-1::-1]) # 步长是-1
print(num_str[::-1])
运行结果:
记录就到这里啦~~若有错误请多指教