字符串是编程必然面临的类型,常用指数之高,不得不先了解下Python中字符串的概念与常用方法
![]()
第一部分 基础
1. 不可变类型
作为不可变类型,主要涉及两个概念赋值、引用,先看三种定义字符串的方法
// 第一种 var1 = 'Hello world' // 第二种 var1 = "Pyhoth" // 第三种 var2 = """ >>> a = "asd" >>> id(a) 4431000496 >>> a = "122" >>> id(a) 4431000552 """
|
上边的代码涉及个问题:
1.1 为何说是不可变类型,怎么var1还可以等于Python?
![]()
Python 没有赋值,只有引用。可以从代码中第三种可以看出,同样的字符串a, 内存地址是不一样的。原因在于,第二次的所谓赋值,其实是重新创建一块内存,然后将a指向新内存地址
第二部分 内建函数
1 填充
var3 = "1234" # 填充字符串 print(var3.center(10, "*")) print(var3.ljust(10, '^')) print(var3.rjust(10, "^")) print(var3.zfill(10))
# 返回值 ''' ***1234*** 1234^^^^^^ ^^^^^^1234 0000001234 '''
|
2 删减
var4 = "55785" print(var4.strip("5")) print(var4.lstrip("5")) print(var4.rstrip("5"))
|
返回值
‘’’
78
785
5578
‘’’
3 变形
var5 = "thank yoU" print(var5.lower()) print(var5.upper()) print(var5.capitalize()) print(var5.swapcase()) print(var5.title())
''' thank you THANK YOU Thank you THANK YOu Thank You '''
|
4 切分
var6 = "7890" # 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. print(var6.partition('9')) print(var6.partition('2')) print(var6.rpartition("0")) var7 = "abz\nzxy" print(var7.splitlines()) print(var7.split("z")) print(var7.rsplit("z"))
|
返回值
('78', '9', '0') ('7890', '', '') ('789', '0', '') ['abz', 'zxy'] ['ab', '\n', 'xy'] ['ab', '\n', 'xy']
|
5 连接
var8 = "ikaf" print(var8.join("0000"))
# 判定 var9 = "kj45" # 长度>0 && 都是字母或都是数字 true 否则false print(var9.isalnum()) # 长度>0 && 都是字母 true 否则false print(var9.isalpha()) print(var9.isdigit()) print(var9.islower()) print(var9.isupper()) print(var9.isspace()) print(var9.istitle()) print(var9.startswith('k')) print(var9.endswith('5'))
|
6 查找
var10 = "1234567890zxc123vbndfgh" print(var10.count('123', 0, len(var10))) # 返回第一个满足条件的位置 print(var10.find('3', 0, len(var10))) # print(var10.index('3', 0, len(var10))) # 找不到返回-1 print(var10.rfind('mm', 0, len(var10))) # 找不到报错 # print(var10.rindex('mm', 0, len(var10)))
|
返回值
7 替换
var11 = "aaaa111222hhhjjjkkk" print(var11.replace("a", "b", 2)) # print(var11.translate()) # translate(table[,deletechars])
|
8 编码解码
编码就是将字符串转换成字节码,涉及到字符串的内部表示。
解码就是将字节码转换为字符串,将比特位显示成字符。
var12 = "什么鬼" print(var12.encode()) print(var12.encode().decode())
''' b'\xe4\xbb\x80\xe4\xb9\x88\xe9\xac\xbc' 什么鬼 '''
|