字符串类型的表示
字符串有两类共四种表示方式 |
由一对单引号或双引号表示,仅表示单行字符串 |
由一对三单引号或三双引号表示,可表示多行字符串 |
!三单引号形成的是字符串,但是它的作用可以当作注释 |
字符串的序号
有两种索引体系
正向递增序号和反向递减序号
字符串有两个非常重要的操作
索引和切片:它们使用[ ]获取字符串的单个字符或一段字符 | |
索引:返回字符串中单个字符 <字符串> [M] | |
切片:返回字符串中一段字符字串 <字符串>[M:N] |
字符串切片的用法、高级用法
(一)
<字符串> [M:N] , M缺失表示至开头,N缺失表示至结尾 |
(其中的M和N都是可以缺失的,缺失指的是我们不提供M不提供N) |
"0 1 2 3 4 5 6 7 8 9 10" [ : 3] 结果是 "0 1 2" |
(二)
<字符串> [M:N :K] , 根据步长K对字符串切片 |
"0 1 2 3 4 5 6 7 8 9 10" [1 : 8 : 2] 结果是 " 1 3 5 7" |
它指的是从1位置开始到8位置前结束,以步长为2来获取其中的字符 |
(三)
我们要想将一个字符串逆序,我们可以使用[M:N:K]的形式,使用[: : -1] 表示 |
M N没有给出来,默认缺失的情况下,表示开头至结尾,步长为-1,相当于逆序 |
展示学习成果
字符串切片操作 | |
s[0] / s[-11] | 就是一个"要"字 |
s[2:7] | 是"力学习呦每" 能取到2不能取到7,取前不取后,中间的都取上 |
[2:-4] | |
s[-9:7] | |
[-9:-4] | |
s[:3] ==s[0:3] | 至开头从0开始一共取三位为"要努力" |
s[-3:]==s[-3:-1] | 至结尾从-3开始到结尾都取为"都进步" |
s[:] | 全取 |
s[::2] | M N没有给出来,默认缺失的情况下,表示开头至结尾,步长为2,从0开始为"0 2 4 6 8 10" |
s[1:8:3] | 从1开始,取不到8,在这个范围内以步长为3取为"努习天" |
这个步长不是空3格所得,而是加3得的数(这样不容易绕晕呜呜呜) | |
s[: : -1] | 逆序 |
s[6:1:-1] | 逆序,能取到6,取不到1,得到的是"每呦习学了力" |
以下这种很常用,随便想的号码
字符串的运算操作符
操作符及使用 | 描述 |
x+y | 连接两个字符串x 和 y |
n*x 或x*n | 复制n次字符串x(能够将字符串x复制n次) |
x in s | 如果x是s的子串,返回True,否则返回False |
#获取星期字符串1
weekstr="星期一星期二星期三星期四星期五星期六星期日"
weekid=eval(input("请输入星期数字(1-7):"))
pos=(weekid-1)*3
print(weekstr[pos:pos+3])
改进一下
#获取星期字符串2
weekstr="一二三四五六日"
weekid=eval(input("请输入星期数字(1-7):"))
print("星期"+weekstr[weekid-1])
字符串处理函数
函数及使用 | 描述 |
len(x) | 长度,返回字符串x的长度 |
len("一二三456")结果为6 | |
str(x) | 任意类型x所对应的字符串类型,str(1.23)结果为"1.23" |
hex(x)或oct(x) | 整数x的十六进制或八进制小写形式字符串 |
hex(425)结果为"ox1a9" oct(425)结果为"Oo651" | |
chr(u) | U为Unicode编码,返回对应的字符 |
ord(x) | x为字符,返回其对应的Unicode编码 |
这里看一些关于Unicode的编码的有趣例子
"1+1=2" +chr(10004)
'1+1=2✔'
"这个字符♉的unicode值是:" +str(ord("♉")) #这个金牛字符是输入法打上去的,输入法yyds!!!
'这个字符♉的unicode值是:9801'
for i in range(12):
print(chr(9800+i),end="")
♈♉♊♋♌♍♎♏♐♑♒♓ #听了老师的课才知道金牛座排第二 /(ㄒoㄒ)/~~
🐏🐂双 🦀🦁♀ 秤 🦂射 摩 瓶 🐟
字符串处理方法
方法在编程中是一个专有名词
方法特指<a> .<b>()风格中的函数<b>()
方法必须要用 . 的形式来执行
方法及使用 | 描述 |
str.lower() str.upper() | 返回字符串的副本,全部字符大写或小写 |
"ABcDef".lower() 结果为”abcdef“ | |
str.split(sep=None) | 返回一个列表,由str根据sep被分隔的组成部分 |
"A,B,C".split(",") 结果为['A','B','C'] | |
str.count(sub) | 返回子串sub在str中出现的次数 |
"an apple a day".count("a") 结果为4 | |
str.raplace(old,new) | 返回字符串str副本,所有old子串被替换为new |
"python".raplace("n","n123")结果为"python123" | |
str.center(width[,fillchar]) | 字符串str根据宽度width居中,fillchar |
"python".center(20,"=") 结果为 | |
'=======python=======' | |
str.strip(chars) | 从str中去掉在其左侧和右侧chars中列出的字符 |
"= python= ".strip(" =np") 结果为 "ytho" | |
str.join(iter) | 在iter变量除最后元素外每个元素后增加一个str",".join("12345") |
结果为"1,2,3,4,5" #主要用于字符串分隔 |
字符串类型的格式化
格式化是对字符串进行格式表达的方式
字符串格式化使用 .format()方法,用法如下:
字符串中槽{}的默认顺序是012...
format()中参数的顺序也为012...
就将format()中的参数按顺序填到对应的槽中
字符串中槽{}的顺序可以不为默认
format()中参数的顺序默认不变
将format()中的参数按照槽中数字填放即可
format()方法的格式控制 | |
<填充> | 用于填充的单个字符 |
<对齐> | <左对齐 >右对齐 ^居中对齐 |
<宽度> | 槽设定的输出宽度 |
: | 引导符号 |
>>>"{0:=^20}".format("python") =是填充符号,^是居中,20是输出宽度 | |
"=======python=======" | |
>>>"{0:*>20}".format("bit") *填充符号,>右对齐,20是输出宽度 | |
"*****************bit" 右对齐指的是参数右对齐,不是填充物 | |
>>>"{:10}".format("bit") 结果为 "bit " | |
:是引导符号,指宽度为10,默认情况下我们填充为空格,变量左对齐 |
format()方法的格式控制 | |
<,> | 数字的千位分隔符 |
<.精度> | 浮点数小数 精度或字符串最大输出长度 |
<类型> | 整数类型 b,c,d,o,x,X |
浮点数类型 e,E,f,% | |
>>>"{0:,.2f}".format(12345.6789) 结果为"12,345.67" | |
.2就是指精度,保留浮点数小数两位的精度 |
类型 | |
b | 二进制 |
c | 字符形 |
d | 十进制 |
o | 八进制 |
x | 十六进制 |
X | 大写的十六进制 |
e | 采用科学计数法e形式 |
E | 采用科学计数法E形式 |
f | 指通常的非科学计数法形式表示浮点数 |
% | 以百分数形式表示 |
在编写python程序中
所有出现的标点符号
要采用英文形式