1)容器型的数据类型,以单引号/双引号/三个单引号/三个双引号作为容器的标志,每个字符就是字符串的元素
2)特点:不可变 有序的 元素 - 引号里的每个基本单元就是字符串的元素,又叫做字符(python中有字符的概念,但是没有字符这个数据类型,单个字符用长度为1的字符串来表示) 3)空字符串 - ‘’ :就用引号引起来,里面什么都没有
4)不可变 - 不支持增删改
5)字符串是有序的 - 支持下标操作来获取数据
在特定的一个或多个符号前加\让符号具有特殊功能或者特殊意义。这种带有\字符就是转义字符:
\n - 换行 \t - 水平制表符(相当于按一下tab键) ’ - 表示一个普通的单引号 " - 表示一个普通的双引号 \ - 表示一个普通的\
转义字符作用\n换行\t水平制表符(相当于按一下tab键)\’表示一个普通的单引号\"表示一个普通的双引号\\表示一个普通的\\u四位十六进制编码值表示十六进制数对应编码对应的字符除了转义字符之外的都是普通字符,普通字符在字符串中表示本身
r的作用是使所有的转义字符串失效,变成普通字符,可以理解为反转义
计算机存储数据只能存储为数字(二进制补码),为了让计算机存储符号,我们为每个符号对应一个固定的数字,这个符号对应的固定数值就是这个字符对应的编码值 编码表 - 存储字符对应的编码值的表,包括:ASCII编码表、Unicode编码表
包含128个字符对应的编码值,主要包含美国的通用符号,包括:英文标点符号、数字字符、字母字符以及其他的特殊字符。在ASCII编码表中,大写字母(65 ~ 90)在前面,小写字母(97 ~ 122)在后面,中间还间隔着其他字符,大写字母和小写字母间隔32个字符
ASCII编码表包含在Unicode编码表中,python使用的是Unicode编码表 中文的编码范围是:0x4e00~0x9fa5 chr(编码值) - 获取编码值对应的字符 ord(字符) - 获取字符对应的编码值
当字符串中有一个或者多个部分是变化的时候,我们可以用字符串的加法、格式字符串或者f字符串来实现这个功能。下面是几种格式化字符串的方法:
在字符串中用格式占位符来代替变化的部分,在后面用数据来给格式占位符赋值
有哪些格式占位符
格式占位符对应的数据类型应用%d整数print(‘打印整数:%d’ % 3) #打印整数:3%s字符串(可以是其他数据)print(‘打印字符串:%s’ % ‘abc’) # print(‘打印字符串:%s’ % ‘abc’)%f浮点数print(‘打印浮点数:%f’ % 1.234) # 打印浮点数:1.234000%.Nf浮点数保留N位小数print(‘打印浮点数:%.2f’ % 1.234) # 打印浮点数:1.23%c字符/字符编码值print(‘打印字符:%c’ % 0x4e00) # 打印字符:一 name = '春花' age = 28 money = 8000 str2 = '%s今年%d岁,目前月薪是%.2f元' % (name, age, money) print(str2) # 春花今年28岁,目前月薪是8000.00元格式约束与format方法一致,在{}的冒号前可进行数学运算,写法上比format简洁很多,具体如下
name = '春花' age = 28 money = 8000 str6 = f'{name}今年{age}岁,目前月薪是{money}元' str7 = f'{name}今年{age+10}岁,目前月薪是{money*2}元' str8 = f'{name}今年{age*2:0>5}岁,目前月薪是{money+50.22222:.2f}元' print(str6, str7, str8, sep='\n') ''' 春花今年28岁,目前月薪是8000元 春花今年38岁,目前月薪是16000元 春花今年00056岁,目前月薪是8050.22元 '''字符串1.count(字符串2[, 开始位置, 结束位置]):统计在字符串1的指定位置之间有多少个字符串2
print('How are you? i am fine, Thank you, and you?'.count('you', 0, 20)) # 1 print('How are you? i am fine, Thank you, and you?'.count('you')) # 3字符串1.find(字符串2[, 开始位置, 结束位置]) - 字符串1中不存在字符串2不报错 字符串1.index(字符串2[, 开始位置, 结束位置]) - 字符串1中不存在字符串2报错
# 返回在指定区间you第一次出现时的下标(即区间内最小的下标值) print('How are you? i am fine, Thank you, and you?'.find('you', 0, 20)) # 8 # 返回从右往左you第一次出现时的下标(即区间内you最大的下标值) print('How are you? i am fine, Thank you, and you?'.rfind('you')) # 39注:在字符串1的指定位置查找字符串2的位置,返回下标(index 和 find除了字符串2不存在时不一致,其他用法和效果都一样)
字符串1.join(序列):用字符串1将序列2中的每个元素连接成一个字符串(序列中的每个元素都需要是字符串) str(数据) - 将数据转化成字符串,所有的序列都能转,转化后数据里的每个符号都是一个元素(包括[({,等等符号)
# 练习:将列表中的元素拼接在一起 # 这种方式是将列表的每一个符号都转化成字符串的一个元素,并不是我们需要的 list1 = [1, 34, 34, 87] list2 = ['sdg', 'dger', 'say'] print(str(list1), str(list2)) # '[1, 34, 34, 87]' '['sdg', 'dger', 'say']' # 用join只是将序列里的元素用字符串1联合在一起,不包括里面的非元素符号 str1 = ''.join([str(x) for x in list1]) str2 = ''.join(list2) print(str1, str2) # '1343487' 'sdgdgersay'字符串1.replace(字符串2, 字符串3[, N]):将字符串1中前N个字符串2替换成字符串3(N没有就是默认全部)
str1 = 'How are you? i am fine, Thank you, and you?' print(str1.replace('you', 'YOU', 1)) # How are YOU? i am fine, Thank you, and you? print(str1.replace('you', 'YOU')) # How are YOU? i am fine, Thank YOU, and YOU?字符串1.split(字符串2[, N]):在字符串1中用字符串2作为切割点进行切割,切割的结果是字符串列表(列表里不包含切割点),N有值表示选择字符串1中前N个字符串2作为切割点,省略则默认全部字符串2作为切割点
str1 = 'How are you? i am fine, Thank you, and you?' print(str1.split('you')) # ['How are ', '? i am fine, Thank ', ', and ', '?'] print(str1.split('you', 1)) # ['How are ', '? i am fine, Thank you, and you?']字符串.zfill(N) - 将字符串转化成长度为N的新字符串,原字符串在左边,右边用0填充 字符串.ljust(N, 填充值) - 将字符串转化成长度为N的新字符串,原字符串在右边,左边用填充值填充
print('填充'.zfill(10)) # 00000000填充 print('填充'.ljust(10, 'x')) # 填充xxxxxxxx