字符串
1.什么是字符串(str)
字符串是Python内置的一种容器型数据类型(序列),不可变,有序;
将单引号或双引号作为容器,里面可以根据情况放多个字符
不可变:指的是内容的值和顺序不可变
有序:一旦字符串确定,字符串中的字符的位置就固定了
2.字符串中的内容 - 字符
Python中只有字符的概念,没有字符对应的数据类型
字符串的基本单元就是字符,又叫字符串的元素
a.基本字符
数字,字母,常用符号,中文,日语,韩语等
'asdffdgg'
"123324dfg"
'终于'
b.转义字符
通过转义符号\后面跟不同的符号来表示特殊功能或特殊意义的字符,以下转义字符的长度都为1
\n --换行
str = 'abc\n123'
print(str)
"""
结果为:
abc
123
"""
' --一个单引号字符
" --一个双引号字符
\\ --一个反斜杠
str = "asd\'123\"美好\\123"
print(str)
#结果为:asd'123"美好\123
\t --制表符(跳到下一个tab位置)
阻止转义:
在字符串最前面加r或R,可以阻止字符串中的转义字符转义(一般用于正则表达式)
str = '\tabc\n123x\'y\"z'
str2 = R'\tabc\n123x\'y\"z'
print(str)
"""
abc
123x'y"z
"""
print(str2)
#\tabc\n123x\'y\"z
c.编码字符
\u后面跟4位十六进制的数,来表示一个字符,这个4位(不足位数前面补0)的16进制数对应的值是字符的编码值
str = 'abc+\u4e00'
print(str)
#abc+一
d.字符编码
Python中的字符采用的是Unicode编码
计算机存储数据的时候只能存数字,而且存储的是数字的补码(是以二进制的格式进行存储)
print(bin(100)) #bin(数字),获取指定数字对应的二进制
print('二进制',0b1100100)
print(oct(100),0o144) #oct(数字),获取指定数字对应的八进制
print(hex(100),0x64) #hex(数字),获取指定数字对应的十六进制
print(0b1100100 * 10)
#print打印的数字结果默认是十进制
编码:每个字符在计算机存储的时候都会对应一个固定且唯一的数字,这个数字就是这个字符的编码
每一个字符和数字的一一对应关系就是编码表,常见的编码表有:ASCII码表的Unicode编码表
ASCII码表
只对数字字符,字符字符,英文符号进行编码
各字符编码值大小比较:
''(0) < ' '(32) < 0(48)~9(57) < A(65)~Z(90) < a(97)~z(122)
Unicode编码表
是对ASCII码表的扩充,能够对世界上所有的符号进行编码,4e00-9fa5(汉子范围)
chr(编码值):获取编码值对应的字符
ord(字符):获取字符对应的编码值,字符就是长度为一的字符串
chr(0x1111)
chr(100)
print(ord('a'))
print(ord('张'))
字符可以比较大小实际就是编码值的比较
字符串也可以,每个对应位字符一次比较
获取字符串
1.获取单个字符
a.语法
字符串[下标]
b.说明
字符串:可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
[ ]:固定写法
下标:又叫索引,一旦字符串确定,那么字符串的每个字符都会对应一个下标,表示这个字符在这个字符串中的位置。下标的范围是0字符串长度减1,0表示第一个字符,1表示第二个,依次类推。下标范围还可以是-1 -字符串长度,-1表示倒数第一个。注意:
str1 = 'python' #p:0/-6
print('python'[3])
print(str1[2])
2.获取部分字符
a.语法
字符串[开始下标:结束下标:步长]
从开始下标开始,获取到结束下标为止,每次下标值增加步长
b.说明
字符串:可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
[: :]:固定写法
开始下标,结束下标:下标值,开始下标对应的字符可以取到,结束下标对应的字符一定取不到。
步长:整数,可以是正可以是负
c.注意
- 这里下标可以越界
- 如果步长为正(从前往后获取),开始下标对应的字符要在结束下标对应字符前才能获取到值,否者结果为空
- 如果步长为负(从后往前获取),开始下标对应的字符要在结束下标对应的字符后面才能获取到值,否者结果为空
str1 = 'abcdef123456789'
print(str1[0:4:1])
print(str1[0:4:-1])
print(str1[-2:-10:-2])
print(str1[0:100:1])
print('hello python'[1:-2:3]) #eoy
切片的语法中可以对步长,开始下标,结束下标进行省略:
1.省略步长(默认为1)
字符串[开始下标:结束下标] == 字符串[开始下标:结束下标:1]
2.省略下标
省略开始下标:
字符串[:结束下标:步长]
如果步长为正,从字符串开头往后取;如果步长为负,从字符串最后一个字符往前取
省略结束下标:
字符串[开始下标::步长]
如果步长为正,取到最后一个字符为止;如果步长为负,取到第一个字符为止
str1 = 'abcedf123456'
print(str1[2:5])
print(str1[-4:-1])
print(str1[:3:1])
print(str1[:3:-1])
print(str1[2:])
print(str1[2::-1])
print(str1[:2])
print(str1[:])
print(str1[::-1])
num = 1234
num = int(str(num)[::-1])
遍历字符串
一个一个的取出所有的字符
方法一:直接遍历
for 变量 in 字符串:
循环体
for i in 'hello':
print(i)
方法二:通过遍历下标来遍历字符
for 变量 in range(字符串长度):
字符串[变量]
str1 = 'when i was young'
for i in range(len(str1)):
print(i,str1[i])
index = 0
while index < len(str1):
print(index,str1[index])
index += 1
字符串相关运算
a.数学运算
字符串支持加法和乘法运算
加法语法:字符串1 + 字符串2 --将两个字符串拼接在一起产生一个新的字符串。加号两边,必须都是数字或都是字符串,数字和字符串不能混合相加。
str = 'abc' + '123'
print(str) #abc123
str += '你好'
print(str) #abc123你好
print(str+'===')
乘法语法:字符串*正整数/正整数*字符串 --指定的字符串重复指定次数,产生一个新的字符串
print('abc' * 3) #abcabcabc
print('*' * 3) #***
b.比较运算
字符串支持所有比较运算符
字符串1 == 字符串2 ,字符串1 != 字符串2 --判断两个字符串是否相等
字符串比较大小:
让两个字符串中相同位子的字符一一比较(从前往后),找到第一对不相同的字符,判断编码值的大小
#判断字符是否是字母
'a' <= char <= 'z' or 'A' <= char <= 'Z'
#判断字符是否是数字
'0' <= char <= '9'
#判断一个字符是否是中文(4e00~9fa5)
'\u4e00' <= char <= '\u9fa5'
'一' <= char <= '龥'
0x4e00 <= ord(char) <= 0x9fa5
c.in 和not in操作
字符串1 in 字符串2 --判断字符串1是否在字符串2中(判断字符串2中是否包含字符串1)
字符串1 not in 字符串2 --判断字符串1是否不在字符串2中(判断字符串2中是否不包含字符串1)
print('abc' in '123abc455') #True
print('abc' in '12a45bc678') #False
print('abc' not in '12a45bca23') #True
d.常用内置函数
len(字符串) --求字符串长度
str(字符串) --将其他数据转换为字符串类型,所有数据都能转换成字符串,转换的时候直接在数据的外面加引号
--字符串转整型:只有去掉引号后,本身就是整数的字符串才能转换成整型
--字符串转浮点型:去掉引号后,本身就是一个数的字符串才能转换成浮点型
--字符串转换成布尔型:除了空串会转换为False,其他都是True
print(bool('')) #False
str2 = ""
if str2:
print('不是空串')
print(str(True)) #'True'
print(bool('')) #False
print(bool(0)) #False
e.字符串的对象方法
字符串.方法()
字符串.capitalize() --将字符串首字母大写
str4 = 'hello'
new_str = str4.capitalize()
print(new_str)
字符串.center(width,fillchar) --产生一个长度为width的新的字符串,新的字符串中原字符居中,剩余的部分用fillchar填充
new_str = str4.center(11,'0')
print(new_str)
字符串.ljust(width,fillchar) ----产生一个长度为width的新的字符串,新的字符串中原字符左对齐,剩余的部分用fillchar填充
字符串.rjust(width,fillchar) ----产生一个长度为width的新的字符串,新的字符串中原字符右对齐,剩余的部分用fillchar填充
字符串.zfill(width) ---- 同 字符串.rjust(width,0)