概述
5.1 基本概念
字符串:是Python的六大数据结构之一,是一个不可变类型,
判定一个变量是否是字符串,需要使用isinstance****函数,例如:
>>> testString = "ts"
>>> isinstance(testString, str)
True
字符串的声明:将一串字符使用单引号或者双引号包裹起来,被引号包裹的内容称为“字符串字面量”。
“长字符串”:使用三重引号来表示一个多行字符串。
5.2 字符串的索引和切片
5.2.1 字符串的索引
字符串的索引可以分为两种:正向索引**(****符合阅读习惯)**和反向索引。
正向索引中所有的索引值都是正数或****0,反向索引所有的索引值都是负数
当需要修改字符串索引值为n的字符时,基本步骤如下:
(1)求出字符串的长度m;
(2)如果m<n,那么返回失败;
(3)取出索引值为0至n-1的字符串,记为leftString;
(4)取出索引值为n+1至m-1的字符串,记为rightString;
(5)把leftString、修改后的字符和rightString拼接为一个新的字符串newString;
(6)输出newString。
5.2.2 字符串的切片
切片操作的基本方法如下:
1)返回[m,n)的子串.aString[m:n]。
2)若m和n分别指的是字符串的开头或者结尾,那么就可以不写。aString[:]。
3)切片的第三种写法是aString[m::n],用于从字符串的索引值为m(即第m+1个字符)开始,每n个字符取出一次的情况。
下面根据n为正、n为负、不写n以及不写m与n等四种情况分别说明:
①如果n为正,则查询方向为正向索引的方向。
②如果n为负,则查询的方向为反向索引的方向。
③如果不写n,则视为aString[m::1]。
④如果n和m都不写,则视为aString[0::1],结果就是字符串本身。
特别地,如果n为0,则系统会返回一个错误。
5.3 字符串的拼接
字符串拼接主要包括加号连接、%连接、join函数、format函数和格式化字符串等方法。
1.“加号连接”:是指直接将两个字符串使用加号连接在一起
>>> prefix = "py"
>>> result = prefix + "thon"
>>> result
缺点:会消耗内存空间。
2.%连接:只需要申请一次内存空间。
>>> prefix = "py"
>>> result = "**%s**thon" **%** prefix
>>> result
Eg.要显示一个进度值为40%的滚动条,就需要使用如下方法显示:
>>> bar = "u2589"
>>> print("4/10:[" + bar * 4 + "--" * 6 + "] = 40%")
4/10:[▉▉▉▉------------] = 40%
注:乘号表示一个字符串出现若干次,“u2589”代表一个黑色的方块
3.join函数,可以将一个列表拼接为一个字符串
>>> ",".join(["Hello", "World", "Python"])
'Hello,World,Python'
#在Python中,可以直接将多个字符串字面量连续书写,从而将其自动连接
>>> "Py"'thon'
'Python'
5.4特殊字符和字符转义
5.5原始字符串和格式化字符串
5.5.1 原始字符串
“原始字符串”:是指在字符串前加入先导符**“r”(也可以是大写的“R”),字符串里的所有内容都不会被转义**
>>> aString = r"c:desktoppythonhomework.py"
>>> print(aString)
c:desktoppythonhomework.py
(1)如果字面量只用到一种引号,显然只需要包裹时用另一种引号就可以;
(2)如果字面量同时用两种引号,那么可以在原始字符串中使用三连引号;
(3)如果字面量里同时出现两种三连引号,就只能放弃使用原始字符串,而改为使用普通的需要转义的字符串。
5.5.2 格式化字符串
>>> aString = "{0:>4}:{1:.2f}".format("价格", 10)
>>> aString
' 价格:10.00'
“格式规格迷你语言”:被花括号“{}”包裹的部分
基本规则如下:
{参数编号:格式化规则}
a参数编号如果写为0,则对应着format函数的第一个参数,如果写1,则对应着第2个参数。每个参数可以使用多次。
b 格式化规则的书写方法如下:
[对齐方式][符号显示规则][#][0][填充宽度][千分位分隔符][.<小数精度>][显示类型]
书写规则时,必须严格按照上述顺序。“<”才代表对齐方式,#和0都是规则中的对应符号,5代表填写宽度,其它使用默认值。
(1)“****对齐方式”**:指的是文本是居中、居左还是居右,空白部分使用什么字符填充。
填充规则是:填充文本
>>> aString = "{0:+>20}".format("价格", 10)
>>> aString
'++++++++++++++++++价格'
(2)**“****符号显示规则”????*只适用于数字,对于字符串是不生效并且会提示错误的
(a)取值在默认情况下是****“-”,即表示只有负数才显示符号,正数不显示。
(b)取值为“+”时,表示无论正数还是负数都显示符号。
©取值为“空格符”时,表示正数在符号位显示一个空格,负数显示负号。
>>> "{0:< 5}{0:<-5}{0:<+5}{0:<5}".format(10)
'1010+1010'
(3)“#”:表示如果是以2进制显示数字,则显示前导符“0b”.
以8进制显示数字,则显示前导符“0o”,
以16进制显示数字,则显示前导符“0x”。
如果不是上述情况,就没有任何效果
(4)0:其含义等价于将填充字符修改为0
(5)填写宽度:其值是一个数字值,表示填充内容占多少的宽度。
(6)千分位分隔符:只有两种取值,即“,”和“_”5.6字符串的编码
(7)小数精度:也就是显示的小数位数,不足的部分会用0补齐。
(8)显示类型:指的是数据如何呈现,根据输入数据的类型.
分成三类,即字符串类型、整数类型和小数类型
#“格式化字符串字面量”,也可以称为“f-string”:在字符串前加入前导符**“f”**或者“F”。
>>> price = 10
>>> amount = 5
>>> f"价格:{price * amount:.2f}"
'价格:50.00'
5.6 字符串的编码
“美国信息互换标准代码”,即ASCII码:分为控制字符和显示字符两部分
ASCII 码的可显示字符
1.在Python中,可以使用chr****函数将一个ASCII码可显示字符转换为其对应的数字,也可以使用ord****函数进行反向转换
>>> chr(97) >>> ord('a')
'a' 97
2.Python规定,字节串字面量只能保存ASCII码中存在的字符(包括控制字符和显示字符)以及十六进制码。书写时,需要在字符串前加字母****“b”(大小写都可以)。具体实例如下:
>>> string = b"bytes literal"
>>> type(string)
<class 'bytes'>
>>> string[0]
98
可以直接使用ASCII码书写字符串中的每一个字符。具体实例如下:
>>> string = "x61x62x63"
>>> string
'abc’
##中文编码:GB2312码(1980年制定)包含ASCII码,GBK码(1995年制定)包含GB2312码,每一个字符用16位表示
**encode()**是编码函数,它将源字符串按照一定的编码规则转换为字节串字面量
decode()****为“****解码函数”,作用是把字节按照编码规则反向地转换为对应字符.
5.7 常用操作
字符串的常用操作可以分为两种,即类型转换函数和字符串操作函数。
(1)类型转换函数int、long、float、complex、tuple、list、chr、ord、unichr、hex和oct。根据函数名就可以判断出函数的作用.
>>> list("I'm fine, thank you")
['I', "'", 'm', ' ', 'f', 'i', 'n', 'e', ',', ' ', 't', 'h', 'a', 'n', 'k', ' ', 'y', 'o', 'u‘]
(2)表达式转换函数eval()
>>> price = 50
>>> amount = 12
>>> eval("price * amount") 600
(3)长度计算函数len()
>>> len("price * amount")
14
(4)大小写转换函数**lower()**和upper()
>>> print("my python lesson".upper())
MY PYTHON LESSON
>>> print("My 1st Python Lesson".lower())
my 1st python lesson
(5)查询函数find()
>>> "It's python".find("yt", 2, 5)
-1
注:第一个参数是待查询的字符串。第二个参数是查询的开始位置,不写就是0,第三个参数是查询的结束位置,不写就是字符串的总长。查询的结果,如果有包含,则返回第一个字符在字符串中的位置,如果不包含,则返回-1。
(6)字符串分解函数split()
>>> print("email_address@domain".split("@"))
['email_address', 'domain‘]
注:第一个参数表示分隔符。第二个参数是切割次数
最后
以上就是细腻手套为你收集整理的第五章 字符串的全部内容,希望文章能够帮你解决第五章 字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复