Python学习笔记7_字符串(String)
文章目录
- Python学习笔记7_字符串(String)
- 1、访问字符串中的值
- 1.1、字符串切片
- 2、字符串更新
- 3、转义字符
- 4、字符串运算符
- 5、原生字符串
- 6、字符串格式化输出
- 6.1、python字符串格式化符号:
- 6.2、格式化操作符辅助指令:
- 6.3、字符串的 format() 方法
- 6.4、三引号
- 6.5、f-string
- 7、Python中字符串常用函数
字符串是 Python 中最常用的数据类型。可以使用引号(
’ 或
" )来创建字符串。
var1 = 'Hello World!'
var2="name"
1、访问字符串中的值
- Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
- Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:
变量[下标] # 字符串中字符的访问
变量[头下标:尾下标] # 子字符串的访问
- 索引值以 0 为开始值,-1 为从末尾的开始位置。
1.1、字符串切片
切片就是从字符串里复制一段指定内容,生成一段新的字符串
切片语法: 变量名[start:end
:step]
包含start, 不包含end, start 不填写默认从头开始, end不填写默认到最后一个
step 指的是步长, 理解为间隔, 每隔 step-1 个取一个值
step 也可控制取向, 正数从左向右取值; 负数从右向左取值. 默认为1.
n = 'abcdefghijklmnopqrstuvwxyz' #第一个字符数为0, 从右向左第一个为-1
print(n[2:5]) #cde
print(n[1:9:2]) #bdfh
print(n[::-1]) #倒叙打印
print(n[-5:-2]) #vwx step默认为1,从左向右输出
print(n[-2:-5:-1]) #yxw
2、字符串更新
1)可以截取字符串的一部分并与其他字段拼接:
>>> var1 = 'Hello World!'
>>> print ("已更新字符串 : ", var1[:6] + 'Runoob!')
已更新字符串 : Hello Runoob!
3、转义字符
在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符:
转义字符 | 描述 |
| 续行符 |
| 反斜杠符号 |
| 单引号 |
| 双引号 |
| 响铃 |
| 退格(Backspace) |
| 空 |
| 换行 |
| 纵向制表符 |
| 横向制表符 |
| 回车,将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。 |
| 换页 |
| 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 |
| 十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行 |
4、字符串运算符
下表实例变量 a 值为字符串 “Hello”,b 变量值为 “Python”:
操作符 | 描述 | 实例 |
+ | 字符串连接 | a + b 输出结果: HelloPython |
* | 重复输出字符串 | a*2 输出结果:HelloHello |
[] | 通过索引获取字符串中字符 | a[1] 输出结果 e |
[ : ] | 截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。 | a[1:4] 输出结果 ell |
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | ‘H’ in a 输出结果 True |
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | ‘M’ not in a 输出结果 True |
5、原生字符串
在字符串前面添加r或R,在Python里表示原生字符串
f = '你好\n世界' # 这样会打印你好后会换行
g = r'你好\n世界' # 这样打印就不会换行,而是直接全部原样输出'你好\n世界'
6、字符串格式化输出
在 Python 中,字符串格式化输出使用与 C 中 sprintf 函数一样的语法。
>>> print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
我叫 小明 今年 10 岁!
6.1、python字符串格式化符号:
符 号 | 描述 |
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
6.2、格式化操作符辅助指令:
符号 | 功能 |
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
在正数前面显示空格 | |
# | 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’) |
0 | 显示的数字前面填充’0’而不是默认的空格 |
% | ‘%%‘输出一个单一的’%’ |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
6.3、字符串的 format() 方法
# 使用空{}占位,顺序填入
print('大家好,我是{},今年{}岁,来自{}'.format('张三', 18, 'Handan')) # 注意format前面是.点
# 输出为:大家好,我是张三,今年18岁,来自Handan
# 使用{数字}占位,按照数字顺序填入,从0开始
print('大家好,我是{2},今年{0}岁,来自{1}'.format(18, 'Handan', '张三'))
# 输出为:大家好,我是张三,今年18岁,来自Handan
# 使用{变量名}占位
print('大家好,我是{name},今年{age}岁,来自{home}'.format(name='张三',home = '邯郸', age=18))
# 输出为:大家好,我是张三,今年8岁,来自邯郸
#{数字}和{变量名}可以混合使用,要求变量要放在最后
print('大家好,我是{1},今年{age}岁,来自{home},今天挣了{0}元'.format(88,'张三',home='Handan',age=18))
# 输出为大家好,我是张三,今年18岁,来自Handan,今天挣了88元
#空{}和{变量名}可以混合使用,要求变量要放在最后
print('大家好,我是{},今年{age}岁,来自{home},今天挣了{}元'.format('张三',88,home='Handan',age=18))
# 输出为大家好,我是张三,今年18岁,来自Handan,今天挣了88元
#空{}和{数字}不能混合使用
6.4、三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
# 输出结果为:
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。
6.5、f-string
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去:
>>> name = 'Runoob'
>>> f'Hello {name}' # 替换变量
'Hello Runoob'
>>> f'{1+2}' # 使用表达式
'3'
>>> w = {'name': 'Runoob', 'url': 'www.runoob.com'}
>>> f'{w["name"]}: {w["url"]}'
'Runoob: www.runoob.com'
- 在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:
>>> x = 1
>>> print(f'{x+1}') # Python 3.6
2
>>> x = 1
>>> print(f'{x+1=}') # Python 3.8
x+1=2
7、Python中字符串常用函数
1)capitalize():将字符串的第一个字符转换为大写
2)count(str, beg= 0,end=len(string)):返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
3)endswith(suffix, beg=0, end=len(string))
检查字符串是否以 suffix 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
4)expandtabs(tabsize=8):把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
5)find(str, beg=0, end=len(string)):检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
6)index(str, beg=0, end=len(string)):跟find()方法一样,只不过如果str不在字符串中会报一个异常。
7)isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
8)isalpha():如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
9)isdigit():如果字符串只包含数字则返回 True 否则返回 False…
10)islower():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
11)isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False
12)isspace():如果字符串中只包含空白,则返回 True,否则返回 False.
12)isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
13)join(seq):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
14)len(string):返回字符串长度
15)lower():转换字符串中所有大写字符为小写.
16)max(str):返回字符串 str 中最大的字母。
17)min(str):返回字符串 str 中最小的字母。
18)replace(old, new [, max]):将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
19)rfind(str, beg=0,end=len(string)):类似于 find()函数,不过是从右边开始查找.
20)rindex( str, beg=0, end=len(string)):类似于 index(),不过是从右边开始.
21)split(str=“”, num=string.count(str)):以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
22)startswith(substr, beg=0,end=len(string)):检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
23)swapcase():将字符串中大写转换为小写,小写转换为大写
24)upper():转换字符串中的小写字母为大写
25)isdecimal():检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。