标准数据类型——String(字符串)
可以使用引号( ’ 或 " )来创建字符串。
1、字符串运算符
有以下两个字符串:
a="Hello"
b="Tom"
(1) 拼接
>>>a+b
"HelloTom"
(2) 重复
>>>a*3
"HelloHelloHello"
(3) 索引和截取
索引:从左到右,下标为0,1,2…;从右到左:-1,-2,-3…。
截取:[头下标:尾下标:步长],左边的开始是包含下边界,右边开始不包含下边界。
例子:
s="abcde"
print(s[0],s[-1])
print(s[3:],s[:-1],s[::2])
以上实例执行结果:
a e
de abcd ace
(4)字符串中是否包含给定字符
>>>"H" in a
>>>"H" not in a
True
False
2、格式化字符串 f-string
1)语法:f+字符串,字符串中的变量或表达式用大括号 {} 括起来,它将变量或表达式计算后的值替换进去,相当于C 中 sprintf 函数。
2)f-string适用于Python3.6 之后的版本,之前使用的是百分号(%)
3)Python 3.8 及以后的版本,可以使用等号(=) 来拼接运算表达式与结果。
例子:
name = "Tom"
print(f'My name is {name}') # 替换变量
print(f'{3+1}') # 使用表达式
print(f'{3+1=}') #使用等号来拼接运算表达式与结果
以上实例执行结果:
My name is Tom
4
3+1=4
3、常用的字符串内建函数
(1)分割
方法 | 描述 |
---|---|
str.split(str="", num=string.count(str)) | 通过指定分隔符对字符串进行切片 |
其中:
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数(分割成num+1个子字符串)。默认为 -1, 即分隔所有。
例子:
str = "My#name#is#Tom"
print(str.split('#',1)) # 以#为分隔符,分割1次
print(str.split('#')) # 以#为分隔符,分割所有
以上实例执行结果:
['My', 'name#is#Tom']
['My', 'name', 'is', 'Tom']
(2)替换
方法 | 描述 |
---|---|
str.replace(old, new [, max]) | 把字符串中的old替换成new |
其中,如果指定第三个参数max,则替换不超过 max 次。
(3)移除
方法 | 描述 |
---|---|
str.strip([chars]) | 截掉字符串左右两边的空格或指定字符 |
str.lstrip([chars]) | 截掉字符串左边的空格或指定字符 |
str.rstrip([chars]) | 截掉字符串右边的空格或指定字符 |
注意:str.strip()不会截掉中间的指定字符,默认为空格。
(4)拼接
方法 | 描述 |
---|---|
str.join() | 将序列中的元素以指定的字符连接生成一个新的字符串 |
例子:
s1 = "-"
s2 = ""
seq = ("h", "e", "l", "l", "o") # 字符串序列
print(s1.join(seq))
print(s2.join(seq))
以上实例执行结果:
h-e-l-l-o
hello
(5)计数和查找
方法 | 描述 |
---|---|
str.len(s) | 返回字符串s的长度 |
str.count(s[, start, end]) | 返回 s 在 str 里面出现的次数,可指定查找范围 |
str.find(s[, start, end]) | 返回 s 在 str 里面起始位置的索引,不在返回-1,可指定查找范围 |
str.index(s[, start, end]) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常 |
str.rfind(s[, start, end]) | 类似于 find()函数,不过是从右边开始查找. |
str.rindex(s[, start, end]) | 类似于 index()函数,不过是从右边开始查找. |
(6)关于大小写
方法 | 描述 |
---|---|
str.capitalize() | 将字符串的第一个字符转换为大写 |
str.upper() | 转换字符串中的小写字母为大写 |
str.lower() | 转换字符串中所有大写字符为小写 |
str.isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些字符都是大写,则返回 True,否则返回 False |
str.islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些字符都是小写,则返回 True,否则返回 False |
(7)字母与数字
方法 | 描述 |
---|---|
str.max(s) | 返回字符串 s 中最大的字母 |
str.min(s) | 返回字符串 s 中最小的字母 |
str.isalpha() | 如果字符串 str 只包含字母则返回 True ,否则返回 False |
str.isdigit() | 如果字符串 str 只包含数字则返回 True ,否则返回 False |
str.isnumeric() | 如果字符串 str 只包含数字字符则返回 True ,否则返回 False |
str.isalnum() | 如果字符串 str 只包含字母或数字则返回 True ,否则返回 False |
解释:
1)数字与数字字符的区别:数字仅包含0-9;数字字符可以是:Unicode 数字,全角数字(双字节),罗马数字,汉字数字等。
2)使用isalpha()和isalnum()时,字符串含有汉字,也返回True。
(8)对齐
方法 | 描述 |
---|---|
str.ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。 |
str.rjust(width[, fillchar]) | 返回一个原字符串右对齐,并使用空格填充至指定长度的新字符串。 |
str.zfill(width) | 同右对齐,填充0 |
解释:
1)width – 指定字符串长度。
fillchar – 填充字符,默认为空格。
2)如果指定的长度小于字符串的长度则返回原字符串。
(9)编码
方法 | 描述 |
---|---|
str.encode(encoding=‘UTF-8’[,errors=‘strict’]) | 以指定的编码格式编码字符串, |
解释:
1)encoding – 要使用的编码,如: UTF-8。
errors – 设置不同错误的处理方案。
2)错误的处理方案默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。
3)该方法返回的是一个 bytes 对象
4)Python3 中字符串没有解码( decode )方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
4、常用的转义字符
在需要在字符中使用特殊字符时,用反斜杠( \ )转义字符。
1)反斜杠在行中时,使字符转义,如:
转义字符 | 描述 | 转义字符 | 描述 |
---|---|---|---|
\ \ | 反斜杠符号 | \000 | 空格 |
\ ’ | 单引号 | \b | 退格 |
\ " | 双引号 | \r | 回车 |
\n | 换行 | \f | 换页 |
\v | 纵向制表符 | \t | 横向制表符 |
2)反斜杠在行末时,为换行符,用于一行代码太长等情景。
3)r/R可以让转义字符去转义。如:print( r’\n’ ),输出仍为 \n 而不是换行。