【愚公系列】2021年12月 Python教学课程 04-字符串

2021-12-13 08:41:29 浏览数 (1)

文章目录

  • 一、字符串类型 str
    • 1 字符串类型的定义
    • 2 字符串的运算:
    • 3 Python 转义字符:
    • 4 “多行字符串”
    • 5 字符串内置方法
    • 6 格式化方法
    • 7 字符串颜色控制
    • 8 字符编码

一、字符串类型 str

1 字符串类型的定义

字符串是 Python 中最常用的数据类型之一,使用单引号或双引号来创建字符串,使用 三引号创建多行字符串。 Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。 字符串是不可变的序列数据类型,不能直接修改字符串本身,和数字类型一样! 虽然字符串本身不可变,但可以通过方括号加下标的方式,访问或者获取它的子串,当 然也包括切片操作。这一切都不会修改字符串本身,当然也符合字符串不可变的原则。

代码语言:javascript复制
>>> s = "hello world!"
>>> s[4]
'o'
>>> s[2:6]
'llo '
>>> s
'hello world!'

Python3 全面支持 Unicode 编码,所有的字符串都是 Unicode 字符串,可以放心大胆的 使用中文。

2 字符串的运算:

下表实例变量 a 值为字符串 “Hello”,b 变量值为 “Python”:

3 Python 转义字符:

编程语言里,有很多特殊字符,它们起着各种各样的作用。有些特殊字符没有办法用普 通字符表示,需要进行转义。python 用反斜杠()转义字符。如下表:

转义字符

描述

(在行尾时)

续行符

反斜杠符号

单引号

"

双引号

a

响铃

b

退格(Backspace)

e

转义

00

n

换行

v

纵向制表符

t

横向制表符

r

回车

f

换页

oyy

八进制数,yy 代表的字符,例如:o12 代表换行

xyy

十六进制数,yy 代表的字符,例如:x0a 代表换行

33

颜色控制

4 “多行字符串”

在字符串中,可以使用三引号(三单或三双引号都可以)编写跨行字符串,在其中可以 包含换行符、制表符以及其他特殊字符。例如:

代码语言:javascript复制
cursor.execute('''
CREATE TABLE users ( 
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

上面的 cursor.execute 执行了一个创建 users 表的 SQL 语句。多行字符串本质上和普通 字符串没有区别,但是将我们从引号和特殊字符串的泥潭里面解脱出来了,在编写、排 版、查看、维护上更人性化。

5 字符串内置方法

方法

描述

string.capitalize()

把字符串的第一个字符大写

string.center(width)

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

string.count(str, beg=0, end=len(string))

返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

bytes.decode(encoding=‘UTF-8’, errors=‘strict’)

Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象

string.encode(encoding=‘UTF-8’, errors=‘strict’)

以 encoding 指定的编码格式编码 string,编码的结果是一个bytes对象。如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’

string.endswith(obj, beg=0, end=len(string))

检查字符串是否以 obj 结束,如果 beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.

string.expandtabs(tabsize=8)

把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。

string.find(str, beg=0, end=len(string))

检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1

string.format()

格式化字符串

string.index(str, beg=0, end=len(string))

跟 find()方法一样,只不过如果 str 不在 string 中会报一个异常.

string.isalnum()

如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

string.isalpha()

如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

string.isdecimal()

如果 string 只包含十进制数字则返回 True 否则返回False.

string.isdigit()

如果 string 只包含数字则返回 True 否则返回 False.

string.islower()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

string.isnumeric()

如果 string 中只包含数字字符,则返回 True,否则返回False

string.isspace()

如果 string 中只包含空格,则返回 True,否则返回False.

string.istitle()

如果 string 是标题化的(见 title())则返回 True,否则返回 False

string.isupper()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

string.join(seq)

以string作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串

string.ljust(width)

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

string.lower()

转换 string 中所有大写字符为小写.

string.lstrip()

截掉 string 左边的空格

string.maketrans(intab, outtab])

maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

max(str)

返回字符串 str 中最大的字母。

min(str)

返回字符串 str 中最小的字母。

string.partition(str)

有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元组 (string_pre_str,str,string_post_str),如果 string 中不包含 str 则 string_pre_str == string.

string.replace(str1, str2, num=string.count(str1))

把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.

string.rfind(str, beg=0,end=len(string))

类似于 find()函数,不过是从右边开始查找.

string.rindex( str, beg=0,end=len(string))

类似于 index(),不过是从右边开始.

string.rjust(width)

返回一个原字符串右对齐,并使用空格填充至长度 width的新字符串

string.rpartition(str)

类似于 partition()函数,不过是从右边开始查找.

string.rstrip()

删除 string 字符串末尾的空格.

string.split(str="", num=string.count(str))

以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num 个子字符串

string.splitlines([keepends])

按照行(’r’,’rn’,n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

string.startswith(obj, beg=0,end=len(string))

检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查.

string.strip([obj])

在 string 上执行 lstrip()和 rstrip()

string.swapcase()

翻转 string 中的大小写

string.title()

返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

string.translate(str, del="")

根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中

string.upper()

转换 string 中的小写字母为大写

string.zfill(width)

返回长度为 width 的字符串,原字符串 string 右对齐,前面填充 0

字符串是 Python 中和列表、字典同样重要的数据类型,对它的操作特别多,因此内置 了很多方法。 几个重要的方法

  • encode() # 编码成 bytes 类型
  • find() # 查找子串
  • index() # 获取下标
  • replace() # 替换子串
  • len(string) # 返回字符串长度,Python 内置方法,非字符串方法。
  • lower() # 小写字符
  • upper() # 大写字符
  • split() # 分割字符串
  • strip() # 去除两端的指定符号
  • startswith() # 字符串是否以 xxx 开头
  • endswith() # 字符串是否以 xxx 结尾

6 格式化方法

我们经常会输出类似’亲爱的 xxx 你好!你 xx 月的话费是 xx,余额是 xx’之类的字符串, 而 xxx 的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。 6.1 占位符 在 Python 中,用%实现格式化,举例如下:

代码语言:javascript复制
>>> 'Hello, %s' % 'world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)

%s 表示用字符串替换,%d 表示用整数替换,有几个%?占位符,后面就跟几个变量或 者值,顺序要对应好。如果只有一个%?,括号可以省略。 常见的占位符有:

其中,格式化整数和浮点数还可以指定是否补 0 和整数与小数的位数,例如:

代码语言:javascript复制
print('--d' % (3, 1))
print('%.2f' % 3.1415926)

如果你不太确定应该用什么,%s 永远起作用,它会把任何数据类型转换为字符串:

代码语言:javascript复制
>>> 'Age: %s. Gender: %s' % (25, True)

有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表 示一个%:

代码语言:javascript复制
>>> 'growth rate: %d %%' % 7

6.2 format()方法 fromat()方法是字符串的内置方法,其基本语法如下: 参数列表:[[fill][align][sign][#][0][width][,][.precision][type]] 简单的 format 格式化方法基本有两类: 1.{0}、{1}、{2}:这一类是位置参数,引用必须按顺序,不能随意调整,否则就乱了。 例如: tpl = “i am {0}, age {1}, really {0}”.format(“seven”, 18) 2.{name}、{age}、{gender}:这一类是关键字参数,引用时必须以键值对的方式,可 以随意调整顺序。例如: tpl = “i am {name}, age {age}, really {name}”.format(name=“seven”, age=18)

7 字符串颜色控制

有时候我们需要对有用的信息设置不同颜色来达到强调、突出、美观的效果,在命令行 或 linux 终端中,颜色是用转义序列控制的,转义序列是以 ESC 开头,在代码中用33 表示(ESC 的 ASCII 码用十进制表示就是 27,等于用八进制表示的 33, 表示八进制)。 注意:颜色控制只在终端界面中有效。 格式:33[显示方式;前景色;背景色 m 正文33[0m

前景色

背景色

颜色

前景色

背景色 颜

30

40

黑色

31

41

红色

32

42

绿色

33

43

黃色

34

44

蓝色

35

45

紫红色

36

46

青蓝色

37

47

白色

显示方式:

显示方式

意义

0

终端默认设置

1

高亮显示

4

使用下划线

5

闪烁

7

反白显示

8

不可见

例子: 33[1;31;40m 1-高亮显示 31-前景色红色 40-背景色黑色 33[0m 采用终端默认设置,也就是取消颜色设置

8 字符编码

计算机只能处理数字 01,如果要处理文本,就必须先把文本转换为数字 01,这种转换 方式就称为字符编码。 对于我们而言,你只需要简单记住下面几种编码就好:

ASCII 编码:早期专门为英语语系编码,只有 255 个字符,每个字符需要 8 位也就是 1 个字节。不兼容汉字。 Unicode 编码:又称万国码,国际组织制定的可以容纳世界上所有文字和符号的字符编 码方案。用 2 个字节来表示汉字。 UTF-8 编码:为了节省字节数,在 Unicode 的基础上进行优化的编码。用 1 个字节表示 英文字符,3 个字符表示汉字。天生兼容 ASCII 编码,所以最为流行。 GB2312:我国早期自己制定的中文编码,世界范围内不通用。 GBK: 全称《汉字内码扩展规范》,向下与 GB2312 兼容,向上支持 ISO10646.1 国际 标准,是前者向后者过渡过程中的一个承上启下的产物。windows 中文版的汉字编码用 的就是 GBK。也非世界范围通用的编码

其它编码:非以上类型者的统称。属于能不用就不要碰的编码。

最后再强调一次,Python3 在运行时全部使用 Unicode 编码

0 人点赞