1 字符串的定义
字符串:就是 一串字符,是编程语言中表示文本的数据类型
语法格式:
变量名 = '字符内容'
变量名 = "字符内容"
变量名 = ''' 字符内容'''
name = 'I am ' \
'Tom'
name1 = "I am" \
" Tom"
name2 = '''I
am Tom''' # 会产生换行效果
print(name)
print(name2)
print(type(name))
print(type(name1))
print(type(name2))
I am Tom
I
am Tom
<class ‘str’>
<class ‘str’>
<class ‘str’>
2 下标
下标:
又叫索引,就是字符串中每个单个字符的编号。方便通过下标快速找到对应的数据
- 字符串的下标是从0开始的
- len()获取字符串的长度
- 字符串.count(小字符串)输出小字符串在大字符串中出现的次数
- 字符串[下标]:从字符串中获取单个下标对应的字符
- 字符串.index(小字符串) :获取小字符串第一次出现的下标
代码示例:
str = 'abcdefggssa'
print(len(str)) # 11
print(str[0]) # a
print(str[5]) # f
i = str.count('a')
print(i) # 2
j = str.index('g')
print(j) # 6
3 切片
切片 方法适用于 字符串、列表、元组
- 切片 使用 下标 来限定范围,从一个大的 字符串 中 切出 小的字符串
- 列表 和 元组 都是 有序 的集合,都能够 通过下标 获取到对应的数据
- 字典 是一个 无序 的集合,是使用 键值对 保存数据
语法格式:
字符串[开始索引:结束索引:步长]
- 指定的区间属于 左闭右开 型 [开始索引, 结束索引)
开始索引 >= 范围 < 结束索引
从 起始 位开始,到 结束 位的前一位结束(不包含结束位本身)
2. 从头开始,开始索引 数字可以省略,冒号不能省略
3. 到末尾结束,结束索引 数字可以省略,冒号不能省略
4. 步长默认为 1 ,如果连续切片,数字和冒号都可以省略
顺序和倒序
- 在 Python 中不仅支持 顺序索引,同时还支持 倒序索引
- 所谓倒序索引就是 从右向左 计算索引
tip:最右边的索引值是 -1,依次递减
演练需求 string = ‘0123456789’
- 截取从 2 ~ 5 位置 的字符串
- 截取从 2 ~ 末尾 的字符串
- 截取从 开始 ~ 5 位置 的字符串
- 截取完整的字符串
- 从开始位置,每隔一个字符截取字符串
- 从下标 1 开始,每隔一个取一个
- 截取从 2 ~ 末尾 - 1 的字符串
- 截取字符串末尾两个字符
- 字符串的逆序(面试题)
string = '0123456789'
print(string[2:6]) # 2345
print(string[2:]) # 23456789
print(string[:6]) # 012345
print(string[:]) # 0123456789
print(string[::2]) # 02468
print(string[1::2]) # 13579
print(string[2:-1]) # 2345678
print(string[-2:]) # 89
print(string[-1::-1]) # 9876543210
4 常用操作
4.1 查找替换
方法 | 说明 |
---|---|
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 = '0123456789'
print(string.startswith('012')) # True 012开头
print(string.endswith('756')) # false 789结尾不是756结尾
print(string.find('23')) # 23出现第一次的下标为2
print(string.rfind('23')) # 从右边寻找不影响下标
print(string.index('23')) # 下标为2
print(string.rindex('56',4,8)) # 下标为5
string = '2323232323'
print(string.replace('23','你好',2)) # 重复替换两次输出你好你好232323
print(string) # 字符串是不可变数据类型 仍旧输出2323232323
4.2 拆分和拼接
方法 | 说明 |
---|---|
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 中所有的元素(的字符串表示)合并为一个新的字符串 |
代码示例:
string = "hello world and i'm tom and nice to meet you!"
print(string.partition('tom')) # 输出元组:("hello world and i'm ", 'tom', ' and nice to meet you!')
print(string.split('and',1)) # 输出列表并且 'and'被丢失了['hello world ', " i'm tom and nice to meet you!"]
string =''' i'm
tom
cat
'''
print(string.splitlines()) #输出列表[" i'm ", 'tom', 'cat']
list1 = ["i'm",'tom','lian','he']
string = '...'
print(string.join(list1)) #输出字符串:i'm...tom...lian...he
4.3大小写转换
方法 | 说明 |
---|---|
string.capitalize() | 把字符串的第一个字符大写 |
string.title() | 把字符串的每个单词首字母大写 |
string.lower() | 转换 string 中所有大写字符为小写 |
string.upper() | 转换 string 中的小写字母为大写 |
string.swapcase() | 翻转 string 中的大小写 |
string = "hello world and i'm tom and nice to meet you!"
print(string.capitalize()) # Hello world and i'm tom and nice to meet you!
str1 =string.title() # Hello World And I'M Tom And Nice To Meet You!
print(str1)
print(str1.lower()) # hello world and i'm tom and nice to meet you!
print(str1.upper()) # HELLO WORLD AND I'M TOM AND NICE TO MEET YOU!
print(str1.swapcase()) # hELLO wORLD aND i'm tOM aND nICE tO mEET yOU!
4.4 文本对齐
方法 | 说明 |
---|---|
string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
string.center(width) | 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 |
string = "hello"
str1 = string.ljust(11,'.') # hello......
str2 = string.rjust(11,'.') # ......hello
str3 = string.center(11,'.') # ...hello...
print(str1)
print(str2)
print(str3)
4.5 去除空白字符
方法 | 说明 |
---|---|
string.lstrip() | 截掉 string 左边(开始)的空白字符 |
string.rstrip() | 截掉 string 右边(末尾)的空白字符 |
string.strip() | 截掉 string 左右两边的空白字符 |
string = ' joker and batman '
print(string)
print(string.lstrip())
print(string.rstrip())
print(string.strip())
扫描二维码关注公众号,回复:
9706573 查看本文章
4.6 判断类型
方法 | 说明 |
---|---|
string.isspace() | 如果 string 中只包含空格,则返回 True |
string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True |
string.isalpha() | 如果 string 至少有一个字符并且所有字符都是字母则返回 True |
string.isdigit() | 如果 string 只包含数字则返回 True,(全角数字 、 ⑴ 、 \u00b2) |
string.isnumeric() | 如果 string 只包含数字则返回 True,(全角数字 , 汉字数字) |
str1 = ' '
print(str1.isspace())
str1 = 'abc12'
print(str1.isalnum())
str1 = 'abc'
print(str1.isalpha())
str1 ='123446'
print(str1.isdigit())
str1 = '12一456'
print(str1.isnumeric()) # true