1、什么是字符串(str)
1) 字符串是python提供的容器型数据类型(序列),不可变、有序
不可变 —— 不支持 增 删 改;
有序 —— 支持下标操作。
2) python中的字符串是用单引号或者双引号引起来的字符集;
引号里面的每个基本单元叫字符
2、字符
python 中只有字符的概念,没有字符类型
1)普通字符:数字 字母 中文 普通符号······
2)转义字符:
在特定的符号前加 \ 反斜杠 来表示特殊功能或者特殊意义
\n —— 换行
\' \" ——表示 单引号 双引号 字符;不再是字符串开头、结尾的标志
\\ —— 表示\反斜杠本身;让一个反斜杠失去转义功能
\t —— 制表符;相当于Tab键
str1 = '\t12\'3\nab\"c \\none'
print(str1)
阻止转义:在字符串的最前面加r/R能够阻止字符串中所有的转义字符转义
str1 = r'\t12\'3\nab\"c \\none'
print(str1)
'\t123'
r'\t123'
3)编码字符:在字符串中用'\u四位的十六进制数'来表示一个字符
\u字符编码值的16进制数
字符编码: A - 65 a - 97
计算机本身只有直接存储数字的能力(存数字的二进制的补码),
为了能够存储数字以外的符号,给每个字符对应一个固定的数字,
用来对字符进行存储。每个字符对应的固定的数字就是字符的编码值。
每个字符和数字的一一对应关系就是字符编码表。
常见的编码表有:ASCII码表、Unicode编码表。
ASCII码表:采用一个字节对字符进行编码,0-127
Unicode编码表:采用两个字节对字符进行编码,包含了ACSII表
chr函数: chr(编码值) —— 获取编码值对应的字符
ord函数:ord(字符) —— 获取指定字符对应的编码
str4 = '123\u4e11'
print(str4)
print(chr(100),chr(0x4e00))
print(ord('李'),ord('珂'))
# 输出所有日语
for code in range(0x30a0,0x30ff):
print(chr(code))
3.字符串操作:查
1)获取单个字符
语法:字符串[下标] —— 获取指定下标对应的字符
说明:字符串 —— 结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
[] —— 固定写法
下标 —— 或者叫索引,是整数,字符串确定后,字符串中的每个字符都有一个确定的下标,表示这个字符在字符串中的位置
python中下标有两种,位置从前往后是:0 ~ 字符串长度-1;
从后往前是: -1 ~ -字符串长度
注意:获取单个字符的时候下标不能越界
str1 = 'hello'
print(str1[0],str1[-1])
2)获取部分字符 (字符串切片)
语法:字符串[开始下标:结束下标:步长]
从开始下标开始获取,每次增加步长取下一个值,取到结束下标前位置,结束下标对应的值取不到
说明:字符串 —— 结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
[]
开始下标,整数,能取到对应的字符
结束下标,整数。不能取到对应的字符:
步长 —— 整数。如果是正数,从前往后取;负数,从后往前取
注意:
字符串切片的结果都是字符串
如果步长是正数,那么开始下标对应的字符要在结束下标对应的字符的前面,才能取到值
如果步长是负数,那么开始下标对应的字符要在结束下标对应的字符的后面,才能取到值
切片的时候下标可以越界
str3 = 'abc 123'
print(str3[0:3:1])
3)获取部分字符的简写
(1)、省略步长
语法:字符串[开始下标:结束下标] 相当于步长为1
str4 = 'hello world'
print(str4[1:5])
(2)、省略开始下标
语法:字符串[:结束下标:步长] 字符串[:结束下标]
步长为正从字符串开头往后获取;步长为负从字符串最后往前获取
print(str4[:5])
print(str4[:5:-1])
(3)、省略结束下标
语法:字符串[开始下标::步长]、字符串[开始下标:]
步长为正,取到字符串最后一个字符;步长为负取到第一个字符为止
print(str4[1:])
print(str4[1::-1])
print(str4[:])
print(str4[::-1]) # 逆序
4)遍历字符串 - 将字符串中的字符一个一个的取出来
for 变量 in 字符串:
——循环体
直接遍历 变量取到的就是字符
for char in str4:
print(char)
间接遍历 通过遍历下标遍历字符
for index in range(11):
print(str4[index])
for index in range(-1, -12, -1):
print(str4[index])
练习:统计输入的字符串中,字母‘a’出现的次数
‘how are you! fine,thanks. and you?’
str5 = 'how are you! fine,thanks. and you?'
s = 0
for char in str5:
if char == 'a':
s += 1
print(s)
字符串相关操作
1.字符串的运算
数学运算符: +, *
比较运算: >, <, >=, <=, !=, ==
赋值运算: =, +=, *=
1)数学运算符: +, ×
- +: 两个字符串相加,将两个字符串拼接产生一个新的字符串
str1 = 'abc' + 'hello'
print(str1)
- 字符串 * 正整数,字符串重复指定次数产生一个新的字符串
str2 = 'abc' * 3
print(str2)
2)比较运算: > < >= <= != ==
针对两个字符串进行比较
print('abc' == 'abc')
字符串比较大小:按位置从前往后一对一对的比较,找出第一对不相等的字符,看它们的编码值谁大,那个字符串就大,后面的不管
print('abcdef' > 'abz')
判断一个字符是否是小写字母: 'a' <= char <= 'z'
判断一个字符是否是大写字母: 'A' <= char <= 'Z'
判断一个字符是否是字母: 'a' <= char <= 'z' or 'A' <= char <= 'Z'
判断一个字符是否是数字字符: '0' <= char <= '9'
判断一个字符是否是中文(4e00~9fa5): '\ue400' <= char <= '\u9fa5'
练习:统计一个字符串中大写字母的个数
True or False
str3 = 'True or False'
s = 0
for char in str3:
if 'A' <= char <= 'Z':
s += 1
print(s)
3)赋值运算: = += * =
str5 = '你好'
str5 += 'hello'
print(str5)
str5 *= 2
print(str5)
2. in 和 not in
字符串1 in 字符串2 —— 判断字符串2是否包含字符串1
print('abc' in 'abc123')
# True
print('abc' in '1a2b3c')
# False
3.len
len(字符串) ——获取字符串长度(字符串中字符的个数)
print(len('abc'))
print(len('\tabc'))
str6 = ' abc'
print(len(str6))
4.str
str(数据) —— 将其他类型的数据转换成字符串
所有类型的数据都可以转换成字符串,转换的时候直接在数据外面加引号
print(str(12.65))
5.格式字符串:在字符串中用格式占位符代替字符串中变化的部分,然后再使用数据对变化的部分赋值
语法:包含格式占位符的字符串 % (数据1,数据2,...)
注意:数据的个数和类型要和前面字符串中格式站位的个数和类型保持一致
格式占位符:
%s —— 字符串
%d —— 整数
%.Nf —— 浮点数 (N控制小数点后面的位数)
%c —— 字符 或 字符对应的编码值 会自动将编码值转化成字符
name = input('姓名:')
age = int(input('请输入年龄:'))
money = 3.5
message = '我是%s,今年%d岁,月收入%.2fK,等级:%c' % (name, age, money, 65)
print(message)
字符串的对象方法
字符串.函数名()
1. capitalize() 字符串中的第一个字符转换成大写字母
str1 = 'abc'
print(str1.capitalize())
2. 设置对齐方式
center(width,fillchar)
字符串在新字符串中居中,width控制新子串的宽度,fillchar是填充字符
rjust(width,fillchar)
ljust(width,fillchar)
zfill(width) 相当于 rjust(width,fillchar)
print(str1.center(7, '-'))
print(str1.ljust(7, '-'))
print(str1.rjust(7, '-'))
num = 15
print(str(num).rjust(3, '0'))
print(str(num).zfill(3))