转义字符 - 在特定符号前加表示特殊功能或者特殊意义的字符 各语言通用
n - 换行 t - 水平制表符 相当于tab键 - 表示一个普通的单引号 - 表示一个普通的双引号 \ - 表示一个普通的反斜杠
注意
转义字符的长度为1。
想要实现一般tab键的功能最好采用t,因为t的长度为1 而tab键的长度可能不一致。
str1 abcn123 print(str1) # abc # 123 str1 abct123 print(str1) # abc 123 # str1 It s OK # 报错 str1 It s OK print(str1) # It s OK str1 It s OK print(str1) # It s OK str1 I say, good good study. print(str1) # I say, good good study. str1 I say, good good study. print(str1) # I say, good good study. str1 C:User\name小明 print(str1) # C:Username小明 # u四位的16进制编码 - 字符编码 str1 u4e00abc print(str1) # 一abc1.3 字符编码 计算机在存储数据时只能存数字(实质存的是数字对应的二进制的补码)
计算机存储图片 存的是每一个像素点的颜色 RGB值
计算机存储视频 存的是每一帧图像的每个像素点的颜色 RGB值
2 为了能够让计算机存储文字 给每个字符对应了一个固定数字 每次在存储这个字符的时候就存储这个字符对应的数字。
每个字符对应的数字就是这个字符的编码值
编码表 - 记录每一字符对应的编码值
1.3.1 常用字符编码0 - 48 A - 65 a - 971.4 编码表
编码表 - 记录字符和数字对应关系的表
常用的编码表 ASCII码表、Unicode编码表 Python
Unicode编码表是ASCII码表的扩展版
1.4.1 ASCII码表a.只记录了美国的符号 这里没有记录中文
b.顺序 从前往后 数字字符 ‘0’-48 、大写字母 ‘A’-65 、小写字母 ‘a’-97 。并且三类符号之间不连续。
0 - 48 A - 65 a - 971.4.2 Unicode编码表
a.是ASCII码表的扩展 包含了ASCII码表 记录了世界上所有国家所有名族所有语言的符号
b.中文范围 4e00 ~ 9fa5 (共20901个)
u4e00 # 一 u9fa5 # 龥1.5 编码值的使用 1.5.1 chr函数
chr(编码值) - 获取编码值对应的字符
print(chr(97)) # a print(chr(0x4e00), chr(0x9fa5)) # 一 龥
# 练习 打印所有中文 num 0 for x in range(0x4e00, 0x9fa5 1): num 1 print(chr(x), end ) if num 30: print() num 01.5.2 ord函数
ord(字符) - 获取字符编码值
print(ord( 婷 )) # 231591.5.3 编码字符
u四位的16进制编码值
print( a , u0061 ) # a a print( au0061 ) # aa
# 判断一个字符是否为中文 if u4e00 c u9fa5 : print( 中文 )2. 进制 2.1 十进制
基数 0 ~ 9
表示方法 直接写
转换函数 直接写
num 12345678902.2 二进制
基数 0、1
表示方法 加前缀0b/0B
转换函数 bin(数据)
num 0b101 print(num) # 5 1*2º 0*2¹ 1*2²2.3 八进制
基数 0~7
表示方法 加前缀0o/0O
转换函数 oct(数据)
num 0o23 print(num) # 19 3*8º 2*8¹2.4 十六进制
基数 09 af(A~F)
表示方法 加前缀0x/0X
转换函数 hex(数据)
num 0xaf2 # 2802 2*16º 17*16¹ 10*16²
print(hex(100)) # 0x64 print(bin(100)) # 0b1100100 print(oct(100)) # 0o1443. 字符串的相关操作和相关函数 3.1 查
查 - 获取字符
字符串获取字符和列表获取元素的语法一样
str1 how are you? i am fine, and you? print(str1[2], str1[-1]) # w ?
注意 一个转义字符的长度是1
str1 tabcn123u6afa # 123櫺 # print(str1) print(str1[1], str1[-2]) # a 3 print(str1[1:6]) # abcn1 print(str1[-1:2]) # ,步长和方向不一致 取不到值 print(str1[1:7:2]) # ac1 print(str1[-1::-2]) # -2nbt print(str1[2:]) # bcn123u6afa print( ------- ) for x in str1: print(x)3.2 、*
1 两个字符串比较大小 比较的是第一对不相等字符的编码值大小
2 两个字符比较大小 比较的是字符的编码值的大小
3 应用
已知字符X
判断是否是数字字符 ‘0’ x ‘9’
判断是否是小写字母 ‘a’ x ‘z’
判断是否是大写字母 ‘A’ x ‘Z’
判断是否是字母 ‘a’ x ‘z’ or ‘A’ x ‘Z’
判断是否是中文 ’u4e00’ x ‘u9fa5’
print( abc acb ) # False print( abc Abc123 ) # True,编码值 a A print( 你好 hello ) # True
# 练习1 已知一个字符串 统计字符串中中文出现的次数 str1 - sh是uM09K你好! count 0 for string in str1: if u4e00 string u9fa5 : count 1 print( 中文出现的次数 , count) # 中文出现的次数 3
# 练习2 判断指定字符串是否是纯数字字符串 # 234445 - 是 122h2333 - 不是 str1 234445 str2 122h2333 for string in str1: # if string 0 or string 9 : if not 0 string 9 : print( 不是 ) break else: print( 是 )
# 练习3: 提取字符串中所有的大写字母 # - sh是uM09K你好! - MK str1 - sh是uM09K你好! new_str for string in str1: if A string Z : new_str string print(new_str) # MK3.4 in 和 not in
字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串
print(10 in [10, 20, 30]) # True print([10, 20] in [10, 20, 30]) # False print( a in abc123 ) # True print( abc in abc123 ) # True print( ac in abc123 ) # False3.5 相关函数 3.5.1 len(字符串)
注意 一个转义字符长度为1
3.5.2 str(数据)str(数据) - 将数据转换为字符串 任何数据都能转换为字符串 转换的时候是直接在数据的打印值外边加引号
x 23
str(23) # 23
str(12.5) # 12.5
str(True) # True
str([10, 20]) # [10, 20] ,逗号后边有空格 自动规范格式
str({ a : 18, b : 32}) # { a :18, b :32} ,加的是双引号 自动规避单双引号引起的歧义
print(str({ a : 18, b : 32}))
3.3 比较运算
1 两个字符串比较大小 比较的是第一对不相等字符的编码值大小
2 两个字符比较大小 比较的是字符的编码值的大小
3 应用
已知字符X
判断是否是数字字符 ‘0’ x ‘9’
判断是否是小写字母 ‘a’ x ‘z’
判断是否是大写字母 ‘A’ x ‘Z’
判断是否是字母 ‘a’ x ‘z’ or ‘A’ x ‘Z’
判断是否是中文 ’u4e00’ x ‘u9fa5’
print( abc acb ) # False print( abc Abc123 ) # True,编码值 a A print( 你好 hello ) # True
# 练习 已知一个字符串 统计字符串中中文出现的次数 str1 - sh是uM09K你好! count 0 for string in str1: if u4e00 string u9fa5 : count 1 print( 中文出现的次数 , count) # 中文出现的次数 3
# 练习2 判断指定字符串是否是纯数字字符串 # 234445 - 是 122h2333 - 不是 str1 234445 str2 122h2333 for string in str1: # if string 0 or string 9 : if not 0 string 9 : print( 不是 ) break else: print( 是 )
# 练习3: 提取字符串中所有的大写字母 # - sh是uM09K你好! - MK str1 - sh是uM09K你好! new_str for string in str1: if A string Z : new_str string print(new_str)4. r语法
在字符串的最前面加r或者R,可以让字符串中所有的转义字符的功能消失(每个符号都会变成普通字符)
应用 路径前最好加rstr1 r c:usernametestdemo.py print(str1) # c:usernametestdemo.py5. 字符串格式化
# name input( 请输入姓名 )
# age int(input( 请输入年龄 ))
name 小明
age 18
# message xxx今年xx岁
# 方法一
message name 今年 str(age) 岁
print(message)
# 方法二
message %s今年%d岁 % (name, age)
print(message)
# 方法三
message f {name}今年{age}岁
print(message)
5.1 格式字符串
语法 包含格式占位符的字符串 % (数据1, 数据2, …)
格式占位符 (各门语言通用)
%s - 字符串占位符 python中 %s可以给任何类型的数据占位 任何数据都能转换为字符串 转化时会将数据转换为字符串 %d - 整数占位符(如果数据为浮点数 会自动转化为整数)%f - 浮点数占位符%.Nf - 浮点数保留N位小数# 1 %s可以给任何类型的数据占位 str1 %sxxx % 张三 # 只有一个数据的话可以把括号省略 print(str1) # 张三xxx str1 %s-xxx % [10, 20] # 只有一个数据[10, 20] print(str1) # [10, 20]-xxx
# 2 %d可以给任何能转换成数字的数据占位 str1 %d-xxx % 12.5 print(str1) # 12-xxx
# 3 %f可以给任何能转换成数字的数据占位 str1 %f - xxx % 4.34 print(str1) # 4.340000 - xxx str1 余额 %.2f % 3241.2345 print(str1) # 余额 3241.23 str1 %s今年%d岁 月薪 %.2f元 % (name, age, 1000 2000) print(str1) # 小明今年18岁 月薪 3000.00元5.2 f-string
基本用法
语法 f’{任何有结果的表达式}’ - 用表达式的结果来填充{}所在的位置
‘{数据}’ - {数据} {}内的数据原样显示f’{数据}’ - 将{}内的数据进行替换# 基本用法
name 小明
age 18
str1 f {name}xxx{age}xxx{age*10}zzz{name[-1]}
print(str1) #小明xxx18xxx180zzz明
加参数
语法 f’{任何有结果的表达式:参数}’
参数
.Nf - 保留N位小数。例如 12.32 - 每三位用逗号隔开。例如 金额:12,345,677 % - 将数据转换为百分比。例如 12% .N% - 将数据转换为百分比 比值保留N位小数 X N - 将数据转换为长度为N的字符串 不够在前面用X对应的字符来填充 X N - 将数据转换为长度为N的字符串 不够在后面用X对应的字符来填充
# a. ,nf
money 123456
str1 f 余额 {money:.2f}
print(str1) # 余额 123456.00
# b. ,
str1 f 余额 {money:,}
print(str1) # 余额 123,456
# c. % / .N%
rate 0.5
str1 f 市值占有率 {rate:%}
print(str1) # 市值占有率 50.000000%
str1 f 市值占有率 {rate:.2%}
print(str1) # 市值占有率 50.00%
# d. X N X N - 决定填充的时候填在前面还是后面( 是前面 是后面) # X - 填充字符 # N - 目标长度
num 9
str1 f python2000{num:0 3}
print(str1) # python2000009
str1 f python2000{num:0 3}
print(str1) # python2000900
6. 字符串相关方法
菜鸟教程有字符串的全部方法 [https://www.runoob.com/python3/python3-string.html]
6.1 center、rjust、rjust、zfil字符串.center(长度,填充字符) - ‘abc’.center(7, ‘x’) - ‘xxabcxx’
字符串.rjust(长度,填充字符) - ‘abc’.rjust(7, ‘x’) - ‘xxxxabc’
字符串rjust(长度,填充字符) - ‘abc’.ljust(7, ‘x’) - ‘abcxxxx’
字符串.zfill(长度) 字符串.rjust(长度,‘0’)- ‘abc’.zjust(7) - ‘000abc’
其中
center 将原字符中间对齐 并使用填充字符将其填充为指定长度
rjust 将原字符右对齐 并使用填充字符将其填充为指定长度
ljust 将原字符左对齐 并使用填充字符将其填充为指定长度
zfill 将原字符右对齐 并使用填充字符0将其填充为指定长度
print( abc .center(7, x )) # xxabcxx print( abc .zfill(7)) # 0000abc print( abc .center(6, x )) # xabcxx6.2 count
字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数
字符串1.count(字符串2,开始下标 结束下标) - 在字符串1中[开始下标,结束下标)范围内统计字符串2出现的次数
str1 how are you? i am fine, thank you! and you? print(str1.count( you )) # 3 print(str1.count( a , 0, 12)) # 1,第12位取不到6.3 find、index
字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的为位置 范围0开始的下标值(从前往后找) 如果不存在返回-1
字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的为位置 范围0开始的下标值(从前往后找) 如果不存在会报错
字符串1.find(字符串2,开始下标 结束下标) - 在字符串1中[开始下标 结束下标)范围内获取字符串2第一次出现的为位置
字符串1.index(字符串2,开始下标 结束下标) - 在字符串1中[开始下标 结束下标)范围内获取字符串2第一次出现的为位置
str1 how are you? i am fine, thank you! and you? print(str1.find( you )) # 8 print(str1.index( you )) # 8 print(str1.find( you1 )) # -1,表示找不到 # print(str.index( you1 )) # 报错 print(str1.find( you , 5, 15)) # 8 print(str1.index( you , 10, -1)) # 306.4 rfind、rindex
字符串1.rfind(字符串2) - 获取字符串1中字符串2第一次出现的为位置 范围-1开始的下标值(从后往前找) 如果不存在返回-1
字符串1.rindex(字符串2) - 获取字符串1中字符串2第一次出现的为位置 范围-1开始的下标值(从后往前找) 如果不存在会报错
字符串1.rfind(字符串2,开始下标 结束下标) - 在字符串1中[开始下标 结束下标)范围内获取字符串2第一次出现的为位置
字符串1.rindex(字符串2,开始下标 结束下标) - 在字符串1中[开始下标 结束下标)范围内获取字符串2第一次出现的为位置
str1 how are you? i am fine, thank you! and you? print(str1.rfind( you )) # 8 print(str1.rindex( you )) # 86.5 isalnum
字符串.isalnum() - 判断字符串是否只有字母或者数字 是返回
注意 只判断ASCII码内的内容 ASCII外的内容不管
print( ahs234函数 ) # True,它只判断ASCII码内的内容 ASCII外的内容不管6.6 isdigit、isnumeric
字符串.isdigit() - 判断是否是纯数字字符串 数字指0~9的数字字符
字符串.isnumeric() - 判断是否是纯数字字符串 数字指具有数字意义的字符
print( 12345 .isdigit()) # True print( 12345 .isnumeric()) # True print( 12345一二十百千万 .isnumeric()) # True print( 12345壹 .isnumeric()) # True print( 12345① .isnumeric()) # True6.7 islower isupper
字符串.islower() - 判断字符串是否是纯小写字母字符串
字符.islower() - 判断字符串是否是纯小写字母字符串
字符串.isupper() - 判断字符串是否是纯大写字母字符串
字符.isupper() - 判断字符串是否是纯大写字母字符串
print( abC .islower()) # False print( abC .isupper()) # False6.8 join
字符串.join(序列) - 将序列中的元素用指定的字符串拼接成一个新的字符串
注意
序列中的元素必须是字符串,不然会报错
如果序列为列表 则列表中的元素必须是字符串才行
result .join( abc ) # 将 abc 中各元素用 拼接成一个新的字符串 print(result) # a b c result and .join( abc ) print(result) # aandbandc result .join([ 小明 , 张三 ]) print(result) # 小明 张三 result .join([ 小明 , 张三 ]) # 想要无缝连接 则采用空串 连接 print(result) # 小明张三
# 练习1 将下面列表中的元素合并成一个字符串 # [ abc , 100, 12.5, True, hello ] - abc10012.5Truehello list1 [ abc , 100, 12.5, True, hello ] str1 .join(str(x) for x in list1) print(str1)
# 练习2 已经一个列表保存多个学生的分数 提取所有学生的姓名 以一个字符串的形式返回
# [{ name : 张三 , age : 18}, { name : 小明 , age : 20},
# { name : 小花 , age : 30}] - 张三,小明,小花
students [{ name : 张三 , age : 18}, { name : 小明 , age : 20}, { name : 小花 , age : 30}]
result , .join(x[ name ] for x in students)
print(result)
6.9 lower、upper
字符串.lower() - 转换字符串中的大写字母为小写
字符串.upper() - 转换字符串中的小写字母为大写
6.10 strip.lstrip.rstrip字符串.strip() - 去除字符串两端的空白字符
字符串.lstrip() - 去除字符串前端 即左端 的空白字符
字符串.lstrip() - 去除字符串后端 即右端 的空白字符
空白字符 空格、tab键、换行
str1 tabc123 n print(str1) # abc123 print(str1.strip()) # abc123 print(str1.lstrip()) # abc123 print(str1.rstrip()) # abc1236.11 replace
字符串1.replace(字符串2 字符串3) - 将字符串1中所有字符串2替换为字符串3
字符串1.replace(字符串2 字符串3,替换次数N) - 将字符串1中前N个字符串2替换为字符串3
str1 how are you? i am fine, thank you! and you? result str1.replace( you , me ) print(result) # how are me? i am fine, thank me! and me? result str1.replace( you , me , 2) print(result) # how are me? i am fine, thank me! and you?6.12 maketrans、translate
两者一般成对使用
str.maketrans(字符串1 字符串2) - 创建字符串1和字符串2的字符对应表
注意 字符串1和字符2的长度一致 对应位置上的字符相对应
字符串.translate(表) - 将字符串按照表内的字符替换方式进行替换
str1 how are you? i am fine, thank you! and you? table str.maketrans( ain , 你我他 ) # a-你 i-我 n-他 result str1.translate(table) print(result) # how 你re you? 我 你m f我他e, th你他k you! 你他d you?
# 练习 将字符串中所有的阿拉伯数字都替换成对应的中文数字 # 123木头人 88 - 一二三木头人 八八 str1 123木头人 88 table str.maketrans( 0123456789 , 零一二三四五六七八九 ) result str1.translate(table) print(result) # 一二三木头人 八八6.13 split
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点进行切割 返回一个由切割后的字符段 不包含字符串2 字符段数量一定是切割点的数量加1 组成的列表 列表中各元素为切割后的各字符段
注意
切割后的字符段数量 切割点的数量 1
如果切割点在最前面或者最后面或者出现连续切割点 结果会出现空串
str1 how are you? i am fine, thank you! and you? str2 str1.split( you ) print(str2) # [ how are , ? i am fine, thank , ! and , ? ]
# 如果切割点在最前面或者最后面或者出现连续切割点 结果会出现空串 str1 abcaanea print(str1.split( a )) # [ , bc , , ne , ]



