1 字符编码
python中的编码采用的是Unicode编码。
什么是编码?
就是数字和字符的一一对应的,其中字符对应数字就是字符的编码。
编码方式
ASCII码表:针对数字字符、字母字符、一些英文中常用的符号进行编码
大写字母编码小于小写字母编码;大写字母编码和小写字母编码之间不是连续的
采用一个字节对字符进行编码(128个字符)
Unicode码:Unicode码包含了ASCII码表,同时能够对世界上所有语言对应的符号进行编码
采用两个字节对字符进行编码,能编码65536个字符。
两个函数
chr(编码值)-将字符编码转换成字符
中文编码范围:4E00-9FA5(十六进制)
ord(字符)-获取字符对应的编码值。
可以将字符编码放到字符串中表示一个字符:\u+4位的16进制编码值。
print('abc\u4f59123')
2获取字符串中的字符
一旦一个字符串确定,那么字符串中每个字符的位置就确定。
而且每个字符会对应一个用来表示其位置和顺序的下标值。
2.1 下标(索引)
字符串中的每个字符都有一个下标,代表其在字符串中的位置;
下标的范围是:0~字符串长度减一 (0代表第一个字符的位置);
-1~负的字符串长度(-1代表最后一个字符的位置)。
2.2 获取单个字符
语法:字符串[下标] -获取字符串中指定下标对应的字符;
说明:字符串 - 可以是字符串常量,也可以是字符串变量(只要结果是字符串就行)
[]-固定写法
下标-字符的下标,不能越界。
'abc'[1]
str1 = 'abc'
str1[1]
2.3 获取部分字符
2.3.1 法一
语法:字符串[开始下标:结束下标:步长]
开始下标、结束下标-写字符下标值
[ : : ]固定写法
步长-整数
功能:从开始下标获取到结束下标前为止,每次下标值增加步长。
注意:
当步长是正数(从前往后取),开始下标对应的字符要在结束下标对应的字符前面
当步长是负数(从后往前取),开始下标对应的字符要在结束下标对应的字符后面
结束下标对应的值取不到的。
2.3.2 法二:
语法:字符串[开始下标:结束下标](相当于步长是1)
''空串
' '空格
str1 = 'qwerqerut'
print(str1[0:9:3], str1[-1:5:-1])
2.4获取部分字符 ,省略下标
获取部分字符的时候,开始下标和结束下标都可以省略
2.4.1开始下标省略
字符串[:结束下标:步长]或者字符串[:结束下标]
步长为正,从字符串开头往后获取;步长为负,从字符串结尾往前获取
2.4.2结束下标省略
字符串[开始下标::步长]或者字符串[开始下标:]
步长为正,从开始下标从前往后获取到字符串结束;步长为负,从开始下标从后往前获取到字符串开头
2.4.3开始下标,结束下标都省略
字符串[: :步长]或者字符串[:]
步长为正,从开头获取到字符串结尾;步长为负,从字符串结尾获取到开头
获取字符串中的多个字符,开始下标和结束下标都可以越界,但获取单个字符下标不能越界。
print(str1[-100:100])
3 字符串相关运算
3.1 加(+)
字符串1+字符串2:将两个字符串拼接在一起产生一个新的字符串
注意:字符串相加,加号两边必须都是字符串。
3.2 乘(*)
字符串*n(正整数):字符串的内容重复n次,产生一个新的字符串。
print(('#' * 5 + '$' * 7) * 5)
3.3 比较运算符:>,<,==,!=,>=,<=
3.3.1 ==,!=
字符串1 == 字符串2 -判断两个字符串是否相等.
3.3.2 >,<
字符串比较大小,是用编码值进行比较;用第一对不同的字符进行编码值大小比较。
char = "二"
print(chr(0x4E00) <= char <= chr(0x9FA5))
print('\u4E00' <= char <= '\u9FA5')
print(0x4E00 <= ord(char) <= 0x9FA5)
3.4.in和not in
字符串1 in 字符串2:判断字符串2中是否包含字符串1,结果是布尔值。
字符串1 not in 字符串2:判断字符串2中是否不包含字符串1,结果是布尔值。
3.5 len函数
len(序列)
len(字符串)-获取字符串中字符的个数。
3.6 str
str(数据):将数据转换成字符串
3.6.1:其他数据转换成字符串:
所有的类型的数据都可以转换成字符串.转换的时候就是在数据的值的最外面直接加引号。
补充:系统数据类型名不能用来给变量命名。
3.6.2字符串转其他类型
字符串转整数:int(字符串),只有去掉引号后剩下的部分本身就是一个整数的字符串才能转换成整型
字符串转浮点型:float(字符串),只有去掉引号后剩下的部分本身就是一个整数或者小数的字符串才
能转换成浮点型(去掉后为带e的科学计数法也可以转)
字符串转布尔:bool(字符串),只有空串''会转换成False,其他所有的字符串都会转换成True.
print(bool(''), bool(""), bool('False')) # False False True。
4 格式字符串
4.1 格式字符串
指的是字符串中通过格式占位符来表示字符串中变化,然后后面再通过其他的值来给占位符赋值
语法:
含有格式占位符的字符串%(占位符对应的值)
格式占位符--有固定的写法;可以有多个。
% --固定写法
() - 里面的值的个数和值的类型和前面的格式占位符一一对应。
4.2 常见格式占位符
%d -- 整数
%s -- 字符串
%.nf -- 浮点数(保留小数点后n位小数)
%c -- 字符(可以将数字转换成字符)
name = input('名字:')
message = '%s,今年%d岁,体重:%.2fkg 血型是:%c'%(name,20,55,97)
print(message)
5 字符串常用方法
涉及到对字符串功能进行修改都是产生的一个新的字符串,原字符串没有发生改变。
5.1 字符串首字母大写
字符串.capitalize()-将字符串首字母转换成大写.
str1 = 'hello'
new_str = str1.capitalize()
print(new_str) # Hello
5.2 字符串对齐
1.字符串.center(width,fillchar) - 居中
2.字符串.ljust(width,fillchar) - 左对齐
3.字符串.rjust(width,fillchar) - 右对齐
width - 正整数,表示新的字符串的宽度
fillchar - 字符,填充的字符,默认为空格
4.字符串.zfill(width) -右对齐,前面填0
str1 = '123'
new_str1 = str1.center(7, '*') # **123**
new_str2 = str1.ljust(7, '*') # 123****
new_str3 = str1.rjust(7, '*') # ****123
new_str4 = str1.zfill(7) # 0000123
print(new_str1, new_str2, new_str3, new_str4)
产生随机数
import random # 导入随机数对应的模块
num = random.randint(0, 99) # 产生一个0~99的随机整数
new_num='python1808'+str(num).rjust(3,'0')
print(new_num)
5.3 统计字符串2在字符串1中出现的次数
字符串1.count(字符串2)
str1 = 'asdeadfaadre'
str2 = 'a'
print(str1.count(str2)) # 4
5.4 检查是否以指定字符结尾和开头
1.检查是否以指定字符结尾
字符串1.endswith(字符串2,beg=0,end=len(字符串1)) beg代表开始检查的位置,end代表结束检查的位置
2.检查是否以指定字符开始
字符串1.startswith(字符串2,beg=0,end=len(字符串1))
str1 = 'asdeadfaadre'
str2 = 'f'
print(str1.endswith(str2, 2, 7),str1.endswith(str2)) # True False
print(str1.startswith(str2,0,len(str1))) # False
5.5把tab换为空格
把字符串1 中的 tab 符号转为空格,tab 符号默认的空格数根据设置而定 。
字符串1.expandtabs(tabsize=8)
s='qwe\tqwr'
print(s,len(s.expandtabs(tabsize=2))) #qwe qwr 7
5.6检查字符串2是否包含在字符串1中的指定范围内
1.字符串1.find(字符串2,beg=0,end=len(字符串1)) #从左边开始查找,如果包含返回开始的索引值(下标),否则返回-1
2.字符串1.index(字符串2,beg=0,end=len(string)) #跟find一样,不过如果没有,会报错
3.字符串1.rfind(字符串2,beg=0,end=len(字符串1))#跟find一样,不过是从右边开始查找
4.字符串1.rindex(字符串2,beg=0,end=len(string)) #跟index一样,不过是从右边开始查找
str1 = 'asdreadfaadre'
str2='ad'
print(str1.find(str2,0,len(str1))) #5
print(str1.rfind(str2,0,len(str1))) # 9
print(str1.rindex('dr',0,len(str1))) # 10
print(str1.index('z',0,len(str1))) # ValueError: substring not found
5.7 判断字符串的组成成分
1.判断字符串是否由字母或数字组成
字符串1.isalnum()
2.判断字符串的字符是否由纯字母组成
字符串1.isalpha()
3.判断字符串是否由纯数字组成
字符串1.isdigit()
str1 = 'asdeadfaadre'
str2='1234'
str3='12ab'
str4='abc#123'
print(str1.isalnum(),str2.isalnum(),str3.isalnum(),str4.isalnum()) # True True True False
str1 = 'asADdre';str2='as123'
print(str1.isalpha(),str2.isalpha()) # True False
str1='123a123';str2='123'
print(str1.isdigit(),str2.isdigit()) #False True
5.8 判断字符串中字母的大小写
1.判断字符串中出现的字母是否全由小写字母构成
字符串1.islower()
2.判断字符串中出现的字母是否全由大写字母构成
字符串1.isupper()
str1 = 'as壹23';str2='As123'
print(str1.islower(),str2.islower()) # True False
str1='A12以';str2='A12cd'
print(str1.isupper(),str2.isupper()) # True False
5.9 判断字符串是否由纯数字构成(中文数字也可以)
字符串1.isnumeric()
str1='123abc';str2='123壹一1'
print(str1.isnumeric(),str2.isnumeric()) # False True
5.10 判断字符串是否由纯空白字符组成
字符串1.isspace()
str1 = ' ';str2=''
print(str1.isspace(),str2.isspace()) # True False
5.11 字符串标题化操作
1.判断字符串是否是标题化的
字符串1.istitle()
2.返回标题化的字符串(所有单词都以大写开始,其他为小写)
字符串1.title()
str1='Abc bcd ';str2='A12'
str3='AbD bcd';str4='ab12'
print(str1.istitle(),str2.istitle()) # False True
print(str3.title(),str4.title()) # Abd Bcd Ab12
5.12 将字符串2的每个字符分开并在之间插入指定的字符串1
字符串1.join(字符串2)
str1='123';str2='a#*&'
print(str1.join(str2)) # a123#123*123&
5.13 字符串中字母的大小写转换
1.转换字符串中所有大写字符为小写。
字符串1.lower()
2.将字符串中大写转换为小写,小写转换为大写。
字符串1.swapcase()
3.将字符串中的小写字母转换为大写。
字符串1.upper()
str1='ABCdef';str2='ABC12壹'
print(str1.lower(),str2.lower()) # abcdef abc12壹
print(str1.swapcase(),str2.swapcase()) # abcDEF abc12壹
print(str1.upper(),str2.upper()) # ABCDEF ABC12壹
5.14 截掉字符串的首位或者末位
截掉字符串首位的空格或指定字符
字符串1.lstrip()
删掉字符串末尾的空格或指定字符
字符串1.rstrip()
删掉字符串首位和末尾的空格或字符
字符串1.strip()
str1='cdabedsc';str2=' aafqweqa '
print(str1.lstrip('c'),str2.lstrip()) #dabedsc aafqweqa
print(str1.rstrip('c'),str2.rstrip()) #cdabeds aafqweqa
print(str1.strip('c'),str2.strip()) #dabeds aafqweqa
5.15 寻找字符串中的最大最小编码字符
返回字符串中最大的字母(ascii码最大的编码)
max(字符串1)
返回字符串中最小的字母(ascii码最小的编码)
min(字符串1)
str1='ABaQbZ';str2='abcAB6c'
print(max(str1),min(str1),min(str2)) # a A 6
5.16 字符串替换
把字符串中的指定部分替换成另一部分,替换次数可设定
字符串1.replace(字符串2,字符串3,num)
str1='acdabwafada'
print(str1.replace('a', "1", 3)) #1cd1bw1fada
5.17 以指定字符串为分隔符截取字符串,截取个数可指定
字符串1.split(字符串2,num=字符串1.count(字符串2))
str1='abcdabwasabweab'
print(str1.split('ab',str1.count('ab')),str1.split('ab',2)) #['', 'cd', 'was', 'we', ''] ['', 'cd', 'wasabweab']
5.18 按照行(\n,\r,\n\r)分隔,产生一个新的字符串
按照行(\n,\r,\n\r)分隔,产生一个新的字符串;如果参数为True,保留换行符;为False,不包含换行符。
字符串1.splitlines(参数)
str1='\n123\rabc\r\nqwe'
print(str1.splitlines(True)) # ['\n', '123\r', 'abc\r\n', 'qwe']
print(str1.splitlines(False)) # ['', '123', 'abc', 'qwe']
5.19 检查字符串中是否只包含十进制的字符
检查字符串中是否只包含十进制的字符
字符串1.isdecimal()
str1='12ab12';str2='123987';str3='123Ⅰ23'
print(str1.isdecimal(),str2.isdecimal(),str3.isdecimal()) # False True False