Python学习笔记 4.0 字符串

这里写目录标题

字符串

字符串特征

在这里插入图片描述
总结与分析:

  1. 对于一对单引号,如果在其中间输入回车,便会变成如下形式 在这里插入图片描述
    但是其输出结果并不会产生改变。并且在使用单引号的时候产生了类似变量d的情况,可以使用反斜杠(\)当做转义符,使得’的出现变得合法
  2. 对于任何的三引号,如果在其中间输入回车,便会变成如下形式 ,
    在这里插入图片描述
    并且使其输出变成同样的分行效果

下标

“下标”又叫“索引”,作用是:通过下标快速找到对应的数据。
例如:

str1 = 'abcdefg'
print(str1)
print(str1[0])
print(str1[3])

切片

语法:
序列 [开始位置下标:结束位置下标:步长]

  1. 不包含结束位置下标对应的数据,正负整数均可;即左闭右开(开始位置下标:结束位置步长)
  2. 不尝试选取间隔,正负整数均可,默认步长为1。即:步长可以省略不写
str1 = "0123456789"
print(str1[2:5:1])	# 234
str1 = "0123456789"
print(str1[2:5:2])	# 24
str1 = "0123456789"
print(str1[2:5])	# 234
str1 = "0123456789"
print(str1[5])	# 01234
str1 = "0123456789"
print(str1[::-1])     # 9876543210  逆序
print(str1[-4:-1])     # 678  从倒数第四个开始输出,直到最后一个,但是左闭右开所以最后一个取不到
print(str1[-4:-1:-1])     #   从倒数第四个开始输出,逆序输出,选取的数是从左往右,步长方向是从右往左,所以不输出

字符串的常用操作

字符串的常用操作方法有查找、修改和判断三大类。

1、查找:

所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数。
.find():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1。
.index():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则报异常。

补表:
在这里插入图片描述
① 语法:
字符串序列.find(或.index或.count)(子串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
② 实例:

mystr = "hello world i love you and i hate you"
# 1.find()
print(mystr.find('you'))  # 19
print(mystr.find('you', 20, 40))  # 34
print(mystr.find('yous'))  # -1    不存在返回-1
# 2.index()
print(mystr.index('you'))  # 19
print(mystr.index('you', 20, 40))  # 34
print(mystr.index('yous'))  # 报错    index函数子串不存在将直接报错

2、修改

所谓修改字符串,指的就是通过函数的形式修改字符串中的数据。

replace

① 语法:
字符串序列.replace(旧字符, 新字符, 替换次数)
注意:替换次数如果查出子串出现次数,则替代次数为该子串出现次数。
② 实例:

mystr = "hello world and itcast and itheima and Python"

mystr.replace('and', 'he')
print(mystr)
new_str = mystr.replace('and', 'he')
print(new_str)

在这里插入图片描述
replace函数有返回值,返回值是修改后的字符串,而不将原字符串进行改变。
说明了字符串是不可变数据类型
数据是否可以改变划分为 可变类型 和 不可变类型 之前字符串的强制定义也是如此。

mystr = "hello world and itcast and itheima and Python"
new_str = mystr.replace('and', 'he', 1)
print(new_str)

在这里插入图片描述
替换次数如果超出子串出现的次数, 表示替换所有这个子串。替换次数如果少于子串出现的次数, 则从字符串左边开始替换掉 替换次数数量 的子串。

split:

按照指定字符分割字符串
① 语法:
字符串序列.split(分割字符,num)
注意:num表示的是分割字符出现的次数,即 将来返回数据个数为 num+1 个。
返回一个列表,同时丢失分割字符。
② 实例:

mystr = "hello world and itcast and itheima and Python"
list1 = mystr.split(' ')
print(list1)
# 当分割字符填写空格的时候,会默认将所有单词进行分割

在这里插入图片描述

mystr = "hello world and itcast and itheima and Python"
list1 = mystr.split('and')
print(list1)
# Num不填默认将所有分割字符进行分割

在这里插入图片描述

mystr = "hello world and itcast and itheima and Python"
list1 = mystr.split('and', 1)
print(list1)
# 当num 小于分割字符出现次数的时候,从左边开始进行 num 次分割。
join:

.join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串。
个人理解:利用字符或子串充当连接符,将零散的多字符串组成的序列合并成为一个新字符串
① 语法:
字符或子串.join(多字符串组成的序列)
合并列表里面你的字符串数据为一个大字符串
② 实例:

mylist = ['aa', 'bb', 'cc']

# aa...bb...cc
new_str = '...'.join(mylist)
print(new_str)

3.修改字符串大小

.capitalize():将字符串第一个字符转换成大写。

注意:capitalize()函数转换后,只字符串第一个字符大写,其他的字符全都小写。
在这里插入图片描述
Python 变成了 python hello 变成了 Hello

.title():将字符串每个单词首字母转换成大写。

在这里插入图片描述

.lower():将字符串中大写转小写。

在这里插入图片描述

.upper():将字符传中小写转大写。

在这里插入图片描述

4.删除空白字符

.lstrip(): 删除字符串左侧空白字符。
	mystr = '     hello world and itcast and itheima and Python    '   
print(mystr)
	new_str = mystr.lstrip()
	print(new_str)

在这里插入图片描述

.rstrip(): 删除字符串右侧空白字符。
new_str = mystr.rstrip()
print(new_str)

在这里插入图片描述

.strip(): 删除字符串两侧空白字符。
new_str = mystr.strip()
print(new_str)

在这里插入图片描述

5.字符串对齐

.ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。

语法:
字符串序列.ljust(长度, 填充字符)
在这里插入图片描述

.rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,语法和.ljust()相同

在这里插入图片描述

.center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,语法和ljust()相同。

在这里插入图片描述
并非绝对居中

6. 判断开头或结尾

所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。

•startswith(): 检查字符串是否以指定子串开头,是则返回True,否则返回False。

如果设置开始和结束位置下标,则在指定范围内检查。

  1. 语法:
    字符串序列.startswith(子串,开始位置下标,结束位置下标)
  2. 实例:
mystr = 'hello world and itcast and itheima and Python'

# 1.startswith()
print(mystr.startswith('hello'))			#True

甚至在子串里面填写hel也能返回一个True值。
理所当然的,当子串为hels时返回一个False 值

•endswith():判断字符串是否以某个子串结尾

语法与startswith类似

print(mystr.endswith('Python'))		# True
print(mystr.endswith('Pythons'))	# False

•isalpha():如果字符串至少有一位字符并且所有字符都是字母则返回True,否则返回False。

在这里插入图片描述

•isdigit():如果字符串只包含数字则返回True否则返回False。

在这里插入图片描述

•isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。

在这里插入图片描述

•isspace():如果字符串中只包含空白,则返回True,否则返回False。

在这里插入图片描述
当然,这些字符串至少都要有一个字符

列表

列表的格式: [数据1,数据2,数据3,……]
列表可以一次性存储多个数据,且可以为不同数据类型。
当然,为了后期方便控制,尽可能存储相同数据类型的数据。

列表的常用操作

列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。

查找

下标:

在这里插入图片描述

• .index(): 返回指定数据缩在位置下标。

列表序列.index(数据,开始位置下标,结束位置下标)在这里插入图片描述
注意:如果查找的数据不存在则报错。
如果只填写数据将默认从头开始查找到列表结束为止。

•.count():统计指定数据在当前列表中出现的次数。

在这里插入图片描述
注意:如果查找的数据不存在则返回0。

•.count():统计指定数据在当前列表中出现的次数。

在这里插入图片描述
注意:如果查找的数据不存在则返回0。

•.len():访问列表长度,即列表中的数据个数。

在这里插入图片描述

•in: 判断指定数据在某个列表序列,如果在则返回True,否则返回False。

在这里插入图片描述

•not in: 判断指定数据不在某个列表序列,如果不在返回True,否则返回False。

注意: in 和 not in 是一个公共操作,即列表,元组等都能够一同使用这个函数。

name = input("请输入您的邮箱账号名:")
name_list = ['tom', 'lily', 'rose']
if name in name_list:
    # 提示用户名已经存在
    print(f'您输入的名字是{name},此用户名已经存在')
else:
    # 提示可以注册
    print(f'您输入的名字是{name},可以注册')

在这里插入图片描述

增加

作用:增加指定数据到列表中。

•.append():列表结尾增加数据。
name_list = ['rose', 'lily']
print(name_list)

name_list.append('xiaoming')
print(name_list)
name_list.append([11,22])
print(name_list)

```![在这里插入图片描述](https://img-blog.csdnimg.cn/20201002174419896.png#pic_center)
由此得:列表数据是可改的 – 列表可变类型。
		append函数追加数据的时候如果数据是一个序列,追加整个序列到列表的结尾。
#### •extend(): 列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。
列表序列.extend(数据)

```python
name_list = ['rose', 'lily']
print(name_list)
name_list.extend('xiaoming')
print(name_list)

在这里插入图片描述
备注:↑extend() 追加数据是一个序列,把数据序列里面的数据拆开然后逐一追加到列表的结尾。

name_list.extend(['xiaoming', 'arun'])
print(name_list)

在这里插入图片描述
注意这边extend(里面是一个列表),所以xiaoming 和 arun 没有分开来
注意! 添加的数据类型不能为int

•insert(): 指定位置新增数据。

列表序列.insert(位置下标,数据)
在这里插入图片描述

删除

•del 或 del()

del 目标

# 删除列表
name_list =['tom', 'lily', 'rose']

del name_list
print(name_list)

在这里插入图片描述

name_list =['tom', 'lily', 'rose']

del name_list[0]
print(name_list)
# ['lily','rose']
•pop(下标):删除制定下表的数据(默认为最后一个),并返回该数据
del_name = name_list.pop()
print(del_name)		# rose
print(name_list)	# ['tom', 'lily']

del_name = name_list.pop(1)
print(del_name)		# lily
print(name_list)	# ['tom', 'rose']

•remove(数据):移除列表中某个数据的第一个匹配项
name_list.remove('rose')
print(name_list)

在这里插入图片描述

•clear() – 清空

在这里插入图片描述

修改

•修改指定下标数据

1.利用列表下标进行数据的修改
a = ['tom', 'rose', 'lily']

# 1.修改指定下标的数据
a[0] = 'aaa'
print(a)
# ['aaa', 'rose', 'lily']
2.逆置: reverse():将原列表排序方式完全颠倒
a.reverse()
print(a)
b = [1, 3, 5, 2, 6, 9, 7, 8]
b.reverse()
print(b)

在这里插入图片描述

3. sort() 排序: 升序 和 降序

语法:在这里插入图片描述

注意:以后的字典当中会用到这个key
Reverse表示排序规则,reverse = True 降序 ,reverse = False 升序(默认)

b.sort()
print(b)

在这里插入图片描述

b.sort(reverse=True)
print(b)

在这里插入图片描述
如果对于字符串使用sort(降序)则和使用 reverse()一样

复制

函数:copy()

b = [1, 3, 5, 2, 6, 9, 7, 8]
cc = b.copy()
print(cc)
print(b)

在这里插入图片描述

列表的循环遍历

需求:依次打印列表中的各个数据。

while

# 方法一
name_list = ['tom', 'lily', 'rose']
i = 0

while i < len(name_list):
    print(name_list[i])
    i += 1

在这里插入图片描述

# 方法二:
while name_list[i] in name_list:
    print(name_list[i])
    i += 1
    if i == 3:
        break

for

for i in name_list:
    print(i)

在这里插入图片描述

列表的嵌套

所谓列表嵌套指的就是一个列表里面包含了其他的子列表。
应用:要储存班级一、二、三 三个班级学生姓名,且每个在这里插入代码片班级的学生姓名在一个列表。

name_list = [['小明', '小红', '小绿'], ['tom', 'lily', 'rose'], ['张三', '李四', '王五']]
# 第一步:按下标查找到李四所在的列表
print(name_list[2])
# 第二步:从李四所在的列表里面,再按下标找到数据李四
print(name_list[2][1])

在这里插入图片描述

列表的总结

在这里插入图片描述
在这里插入图片描述

应用: 随机分配办公室

# 需求:8位老师,三个办公室 ,将8位老师随机分配到3个办公室
"""
步骤:
1. 准备数据
    1.1 8位老师 -- 列表
    1.2 3个办公室 -- 列表嵌套

2. 分配老师到办公室
    *** 随机分配
    就是把老师的名字写入到办公室列表 -- 办公室列表追加老师名字数据

3. 验证是否分配成功
    打印办公室详细信息:每个办公室的人数和对应老师名字

"""
import random
# 1. 准备数据
teacher = ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']
offices = [[], [], []]

# 2.分配老师到办公室 -- 取到每个老师放到办公室列表 -- 遍历老师列表数据
for name in teacher:
    # 列表追加数据  --  append(选中) extend(会导致name分裂) insert(因为要随机插入,所以不能利用该函数,因为insert是指定位置插入)
    # xx[0] --  不能指定是某个具体下标 --  随机
    num = random.randint(0, 2)
    offices[num].append(name)
    print(offices)
    print(teacher)
# 为了更贴合生活,把每个办公室子列表加了一个办公室编号 1,2,3
i = 1
# 3.检验是否分配成功
for office in offices:
    # 打印办公室人数 --  子列表数据的个数  len()
    print(f'办公室{i}的人数是{len(office)}')
    # 打印老师的名字
    # print() -- 每个子列表里面的名字个数不一定 -- 遍历 -- 子列表
    for name in office:
        print(name)
    i += 1

在这里插入图片描述

备注:
如果嫌弃在遍历办公室列表的时候输出每一遍,只需要取消print 的缩进即可化简为只输出1次。

错误示例:

  1. 将append写成了extend:
  2. 在这里插入图片描述
    显然的,每次插入都是插入两个字符在同一个列表里面
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值