字符串类型及操作
一、字符串
1.1 字符串的四种表示方法( 单引号、双引号、三单引号、三双引号,转义符 )
- 一对单引号
'你好,Python' # 仅可表示单行字符串
- 一对双引号
"你好,Python" # 仅可表示单行字符串
- 一对三单引号(可以当作多行注释使用)
'''你好, Python''' # 可以表示多行字符串
- 一对三双引号
————————————————————————————————————————————————————————————"""你好, Python""" # 可以表示多行字符串
字符串表示的特殊情况:
①当双引号作为字符出现在字符串中时,字符串用单引号表示。
②当单引号作为字符出现在字符串中时,字符串用双引号表示。'小明说:"我每天8:00上课"。'
③当单引号、双引号都作为字符出现在字符串中时,字符串用三单引号表示。"He says:'how about going lunch?'"
'''小明说:"昨天玲玲说'我每天8:00上课'"。'''
- 特殊字符——转义符 \
-
转义符用来表达特殊字符的本意。
"小明说:\"昨天玲玲说\'我每天8:00上课\'\"。"
-
转义符形成的特殊组合,表达某些不可打印的含义。
\b 回退 \n 换行(光标移到下行首) \r 回车(光标移到本行首)
-
1.2 字符串的序号( 正向递增序号、反向递减序号 )
字符串的序号有两种:正向递增序号(字符串第一个字符为0号,向后序号依次递增)、反向递减序号(字符串最后一个字符为-1号,向前序号依次递减)
#正向递增序号:0、1、2、3、4、5、6、7、8、9、10、11
"请输入带有符号的温度值:"
#反向递减序号:-12、-11、-10、-9、-8、-7、-6、-5、-4、-3、-2、-1
1.3 字符串的使用( [M]索引、[M:N]切片、[M:N:K]高级切片 )
使用[ ]获取字符串中的一个(称作索引)或多个字符(称作切片)。
例如:
"请输入带有符号的温度值:"[0] # 索引到字符 请
Str = "请输入带有符号的温度值:"
Str[4] # 索引到字符 有
"请输入带有符号的温度值:"[3:5] # 切片到字符 带有
Str = "请输入带有符号的温度值:"
Str[6:-2] # 切片到字符 号的温度
Str[:4] # 切片到字符 请输入带
# <字符串>[M:N]中的M省略表示从开头,N省略表示至结尾
Str[1:9:2] # 切片到字符 输带符的
# <字符串>[M:N:K]表示从第M位开始到第N位前结束,以步长为K来获得其中的字符(K是正数则从前向后取,是负数则从后向前取)
Str[::-1] # 切片到字符 :值度温的号符有带入输请
实例举例:
''' 获取星期字符串 '''
weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("请输入星期数字(1-7):")) # input()默认返回字符串类型,用eval()将字符串的引号去掉
pos = (weekId - 1) * 3
print(weekStr[pos: pos+3]) # 输出对应切片的字符串
二、字符串操作符( + 、* 、in )
字符串操作符及使用 | |
---|---|
x + y | 连接字符串 x 和字符串 y ,字符串 x 在前 |
n * x 或 x * n | 复制 n 次字符串 x |
x in s | 如果字符串 x 是字符串 s 的子串,则返回 True,反之返回 False |
上面的实例改进版:
''' 获取星期字符串 '''
weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):")) # input()默认返回字符串类型,用eval()将字符串的引号去掉
print("星期" + weekStr[weekId - 1]) # 输出对应切片的字符串
三、字符串处理函数( len()、str()、hex()、oct()、chr()、ord() )
字符串处理函数 | 说明 |
---|---|
len(x) | 求长度函数,返回字符串 x 的字符个数 |
str(x) | 将任意类型 x 写成字符串形式,返回一个字符串。str(2.33) 返回字符串 “2.33” ,str([1, 2]) 返回字符串 “[1, 2]” |
hex(x) | 将整数 x 的十六进制小写形式写成字符串形式,返回一个字符串。hex(13) 返回字符串 “0x1101” |
oct(x) | 将整数 x 的八进制小写形式写成字符串形式,返回一个字符串。oct(425) 返回字符串 “0o651” |
chr(u) | u 为 Unicode 编码,返回 u 对应的字符 |
ord(x) | x 为字符,返回 x 对应的 Unicode 编码 |
Unicode编码:
- Unicode编码是一种编码(这是一句废话),其编码空间从整数0至整数1114111(0x10FFFF),每个整数编码对应一个字符(包括人类所有的字符)。
- Unicode编码是Python字符串的编码形式,在Python3中,所有的字符串所有的python代码全部都是采用Unicode编码形式来实现的。
例如:
图3-1 chr() 和 ord() 函数举例使用
图3-2 chr() 函数举例输出十二星座
图3-2的 print() 函数中的 end="\n\r" 决定每一次显示完要进行换行回车操作。若 end="" ,则所有结果都显示在同一行内。
四、字符串处理方法( str.lower()、str.upper()、str.spilt()、str.count()、str.replace()、str.center()、str.strip()、str.join() )
“方法”在编程中是一个专有名词!
● “方法”特指 <a>.<b>() 风格中的函数<b>()
● 方法本身也是函数,但与 <a> 有关,以 <a>.<b>() 风格使用
● 字符串及变量是 <a> ,它们存在“方法”
● <a>.<b>() 风格恰恰是面向对象的一种使用风格,<a> 是对象,<b>() 是对象能提供的功能(即方法)
Python中较常用的八个字符串处理方法
字符串处理方法及使用 | 说明 |
---|---|
str.lower() | 返回字符串的副本,全部字符小写。“AbCdefGh”.lower() 返回 “abcdefgh” |
str.upper() | 返回字符串的副本,全部字符大写。“AbCdefGh”.upper() 返回 “ABCDEFGH” |
str.spilt(sep = None) | 返回一个列表,列表由 str 根据 sep 被分割的部分组成。“A,b,C”.spilt(",") 返回 [‘A’, ‘b’, ‘C’] |
str.count(sub) | 返回子串 sub 在 str 中出现的次数。“an apple a day”.count(“a”) 返回 4 |
str.replace(old, new) | 返回字符串的副本,所有 old 子串被替换成 new 。“Python”.replace(“h”, “3.io”) 返回 “Pyt3.ioon” |
str.center(width[, fillchar]) | 返回字符串的副本,字符串 str 根据宽度 width 居中,fillchar 填充在空缺位置。“Python”.center(23, “+”) 返回 “+++++++++Python++++++++” |
str.strip(chars) | 返回字符串的副本,从字符串 str 中去掉在其左右侧 chars 中列出的字符。"= Python= “.strip(” =np") 返回 “ytho” |
str.join(iter) | 返回字符串的副本,在字符串 iter 中除最后一个元素外,每一个元素后面增加一个str,用于字符串的分隔。",".join(“12345”) 返回 “1,2,3,4,5” |
五、字符串类型的格式化
5.1 格式化方法( .format() 格式化方法 )
字符串格式化使用 .format() 方法,用法如下:
<模板字符串>.format(<逗号分隔的参数>)
涉及相关概念:“槽”,相当于一个占位信息符,用 {} 表示,只在字符串中有用。
''' 默认填槽顺序 '''
“{}:计算机{}的CPU占用率为{}%”.format("2020-10-27", "DESKTOP-9LS08DJ", "68")
# 输出字符串 "2020-10-27:计算机DESKTOP-9LS08DJ的CPU占用率为68%"
''' 指定填槽顺序 '''
“{2}:计算机{0}的CPU占用率为{1}%”.format("2020-10-27", "DESKTOP-9LS08DJ", "68")
# 输出字符串 "68:计算机2020-10-27的CPU占用率为DESKTOP-9LS08DJ%"
5.2 .format() 方法的格式控制( 填充、对齐、宽度、千位分隔符、精度、类型 )
槽内部格式化的配置方法:{<参数序号>:<格式控制标记>}
图5-1 槽内部配置方法
槽内部配置方法可大致分为两组:
- 前三个(填充、对齐、宽度)为一组,针对字符串。
图5-2 .format() 格式方法举例1
图5-3 .format() 格式方法举例2
图5-4 .format() 格式方法举例3 - 后三个为一组,针对数。
图5-5 .format() 格式方法举例4
图5-6 .format() 格式方法举例5
图5-7 .format() 格式方法举例6