1.什么是字符串(str)
字符串是python内置的一种容器型数字类型
不可变但是有序;将单引号或者单引号作为容器,里面可以根据情况放多个字符不可变:指的是内容的值和顺序不可变
有序:一旦字符串确定,字符串中字符的位置就固定
2.字符串中的内容 - 字符
python中只有字符的概念,没有字符对应的数据类型字符串的基本单元就是字符,又叫字符串的元素
a.基本字符 - 数字,字母,常用符号,中文,日语,韩语等
'12'
'assad'
'^%$###'
b.转义字符 - 通过转义符号\后面跟不同的符号来表示特殊功能或特殊意义的字符
\n - 换行 ' - 一个单引号 " - 一个双引号
\n - \n \t - 制表符
str1 = '\ta'bc\n1"23\n000'
print(str1)
阻止转义:在字符串的最前面加r/R,可以阻止转义,一般用于正则表达式
str2 = r'abc\n123\tx'y"z'
print(str2)
c.编码字符 - \u后边跟4位的十六进制数,来表示一个字符,这个4位的16进制数对应的值是字符的编码值
0-9,a/A-f/F
print(0xa + 10)
3.字符编码
python中的字符采用的是Unicode编码
计算机存储数据的时候只能存数字,而且存的是数字的补码,而且是以二进制的格式进行存储的
100 #十进制数
print(bin(100)) #bin(数字) - 获取指定数字对应的二进制
print('一百的二进制:',0b1100100)
print(oct(100),0o144) #oct(数字) - 获取指定数字的八进制
print(hex(100),0x64) #hex(数字) - 获取指定数字对应的十六进制
print(0b1100100 * 10)
编码:每个字符在计算机中存储的时候都会对应一个固定且唯一的数字或编码 每一个字符和数字的一一对应的关系就是编码表,常见的编码表:ASCII码表和Unicode编码表 ASCII码表只对数字字符,字母字符,英文符号进行编码 Unicode编码表是对ASCII表的扩充,能够对世界上所有符号进行编码
chr(编码值) - 获取编码值对应的字符
ord(字符) - 获取字符对应的编码值
print(chr(36947))
print(ord('道'))
num = 0
for code in range(0x4e00,0x9fa5):
print(chr(code),end=' ')
num += 1
if num % 10 == 0:
print()
print(num)
1.获取字符 - 取字符串的内容
a.获取单个字符
"""
a.语法:字符串[下标] --- 根据下标获取字符串中对应的字符
b.说明:字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串表达式等都可以
[] - 固定写法
下标 - 又叫索引,指的是字符串中字符的位置,一旦字符串确定了,字符串中的每个字符,
都会对应一个下标,表示这个字符在字符串中的位置
下标的范围是0到字符串长度减1,0表示第一个,依次类推
下表范围还可以是[-1,- 字符串长度减1],-1表示倒数第一个,依次类推
c.获取单个字符的时候下标不能越界
str1 = 'py\nthon' # 'p' : 0/-6 'y' : 1/-5
result = 'python'[3]
print(result)
print(str1[3])
1.2获取部分字符(字符串切片)
a.语法:字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下标前为止,每次下标值增加步长
b.说明:字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式都可以
[],: - 固定写法
开始下标,结束下标 - 下标值,开始下标对应的字符可以取到,结束下标对应的值一定取不到
步长 - 整数,可以是正的也可以是负的
c.注意:下标可以越界
如果步长为正(从前往后获取),开始下标对应的字符要在结束下标对应的字符前才能获取到值
如果步长为负 (从后往前获取),开始下标对应的字符要在结束下标对应的字符的后面才能获取到值
str2 = 'abcedf123456'
print(str2[0:130:1])
print(str2[-1:-14:-3])
print('hello python'[1:-2:3]) # 'eoy'
切片的语法中可以对步长,开始下标和结束下标进行省略:
1.省略步长
字符串[开始下标:结束下标] == 字符串[开始下标:结束下标:1]
2.省略开始下标
字符串[:结束下标:步长] - 如果步长为正,就从第一个开始取,如果步长为负,就从后面往前取
字符串[开始下标::步长] - 如果步长为正,取到最后一个字符为止,如果步长为负,从后取到第一个字符为止
str2 = 'abcedf123456'
print(str2[2:5])
print(str2[-4:-1])
print(str2[:3:1])
print(str2[:3:-1])
print(str2[:]) # 正序
print(str2[::-1]) # 倒序
练习:124 --- 421
num = 124
num = int(str(num)[::-1])
print(num)
1.3 遍历字符串 - 一个一个的取出所有的字符
方法一:直接遍历
for 变量 in 字符串:
循环体
方法二:通过遍历下标,来遍历字符串
for 下标 in range(字符串长度):
字符串[变量]
for char in 'hello':
print(char)
str3 = 'when i was young'
len(字符串) - 获取字符串长度,返回一个数字。字符串中字符的个数
for index in range(len(str3)):
print(index,str3[index])
1.字符串相关运算
a.数学运算:字符串支持加法运算和乘法运算
语法:字符串1 + 字符串2 - 将两个字符串拼接在一起产生一个新的字符串
new_str = 'abc ' + '123'
print(new_str)
new_str += '你好'
print(new_str)
注意:加法两边必须都是数字或者都是字符串,不能混合相加
new_str = 'abc' + '123' # 错误的
print(new_str + '====')
语法:字符串 * 正整数 / 正整数 * 字符串 - 指定一个字符串重复打印指定次数
print('abc' * 3)
b.比较运算:字符串支持所有的比较运算符
==,!= - 判断两个字符串是否相等
print('abc' == 'abc')
两个字符串比较大小:让两个相同位置的字符一一比较,找到一对不相等的字符,判断编码值的大小
print('abc' > 'abc')
应用:
判断一个字符是否是字母: 'a' <= char <= 'z','A' <= char <= 'Z'
判断一个字符是否是数字:'0' <= char <= '9'
判断一个字符是否是中文(4e00~9fa5):'\u4e00' <= char '\u9fa5'
print(chr(0x4e00),chr(0x9fa5))
练习:输入一个任意的字符串,统计输入的内容中字母的个数
例如:输入‘ABC23你好世界’,结果是3
string4 = input('请输入一串字符串')
num1 = 0
for index in range(len(string4)):
if 'a' <= string4[index] <= 'z' or 'A' <= string4[index] <= 'Z':
num1 += 1
print(string4[index])
print(num1)
3.in和not in 操作
字符串1 in 字符串2 - 判断字符串1是否在字符串2中(判断字符串2是否包含字符串)
字符串1 not in 字符串2 - 判断字符串1是否不在字符串2
print('abc' in '123abc===')
print('abc in ' in 'sdsdsabcin')
print('s' in string4)
4.常用内置函数
len(字符串) - 求字符串长度
str(数据) - 将其他数据转换成字符,,所有的类型都可以转换成字符串
只有去掉引号后,本身就是一个整数的字符才能转换成整型
print(bool(''))#字符串为空输出False
5.字符串的对象方法
字符串.方法()
str4 = 'hello'
new_str = str4.capitalize()
print(new_str)#首字母大写
new_str = str4.center(11,'0')
print(new_str)#000hello000
new_str = str4.ljust(11,'=')
print(new_str)#hello======
num = 1
student_id = str(num).rjust(3,'0')
print(student_id)#001
student_id = str(num).zfill(4)
print(student_id)#0001