一、字符串常用拼接操作
#格式化字符串
#方式一:在字符串后用%函数,把参数传给字符串
#注意1:如果字符串中用到“%”符号,就输入“%%”
#注意2:float类型前用整数部份表示整数部份的位数,小数部份表示小数点后的位数
print("方式1(%%函数):%5.0d,%3.0d,%4.3f,%s "%(234,12,3.5,123321))
#方式二:字符串对象的format函数
#字会串中,用{索引:长度 类型}把后序的参数引用起来,如 0:5d 1:3.f
#注意1:要显示{"符号,用"{{"代替
#float类型前用整数部份表示整数部份的位数,小数部份表示小数点后的位数
print("方式2(字符串对象的format函数):{{ {0:d},{1:3.5f},{2} }}".format(234,3.5,3.8))
#方式三:字符串对象的format函数,指点定变量名
#注意2:这种方式,可以在字符串中反复使用一个参数值,并且不用关心参数的顺序有误
print("方式3(字符串对象的format函数):{name},{age},今天的年龄{age}".format(age=18,name="小明"))
以上代码输出:
方式1(%函数): 234, 12,3.500,123321
方式2(字符串对象的format函数):{ 234,3.50000,3.8 }
方式3(字符串对象的format函数):小明,18,今天的年龄18
二、字符串对象的常用函数
#字符串的基础函数
varStrLower = "abcdef0123456789"
varStrUpper = "ABCDEF0123456789"
varStr = "aBcdef0123456789"
#判断字符串是否全是大写或小写
print("varStrLower.islower()=>",varStrLower.islower())
print("varStrLower.isupper()=>",varStrLower.isupper())
print("varStr.islower()=>",varStr.islower())
print("varStr.isupper()=>",varStr.isupper())
#转换首字母为大写
print("varStrLower.isupper()=>",varStrLower.capitalize())
print("\"abcd efg hijk 00123 abc\".isupper()=>","abcd efg hijk 00123 abc".capitalize())
#去除字符串前后的空格
print("\" Hello \".strip()=>"+" Hello ".strip()+".")
#查找子字符串位置
print("\"abcdef\".index(\"cd\")=>{0}".format("abcdef".index("cd")))
#字符串字符长度
print('len("abcd")=>',len("abcd"))
print('len("你好")=>',len("你好"))
print('len("你好.")=>',len("你好."))
以上代码的输出结果如下:
varStrLower.islower()=> True
varStrLower.isupper()=> False
varStr.islower()=> False
varStr.isupper()=> False
varStrLower.isupper()=> Abcdef0123456789
"abcd efg hijk 00123 abc".isupper()=> Abcd efg hijk 00123 abc
" Hello ".strip()=>Hello.
"abcdef".index("cd")=>2
len("abcd")=> 4
len("你好")=> 2
len("你好.")=> 3
三、字符串转换成byte数组
我们可以使用以下方式把字符串转换成数组:
#字符串转换成byte数组
varStr = "123456七八"
varUtf8 = bytes(varStr,encoding='utf8')
print("UTF8",type(varUtf8),",len=",len(varUtf8),",data=",varUtf8)
varGBK = bytes(varStr,encoding='gbk')
print("GBK",type(varGBK),",len=",len(varGBK),",data=",varGBK)
输出结果:
UTF8 ,len= 12 ,data= b'123456\xe4\xb8\x83\xe5\x85\xab'
GBK ,len= 10 ,data= b'123456\xc6\xdf\xb0\xcb'
在使用过程中要注意,转换时不能出现不能编码的情况,比如含有中文的字符串转换为ascii编码的数组会报错,如下图所示:
四、数组转换为字符串
#byte数组转换成字符串
print(str(varUtf8, encoding='utf8'))
print(str(varGBK, encoding='gbk'))
同样的,把gbk编码的数组用utf8编码还原成字符串也会报错,如下图所示:组转换
五、子字符串节取
#子字符串截取
varStr = "0123456789abcdef"
#单个字符
print("取一个字符:",varStr[1])
#起始与结束位置
print("起始与结束位置:",varStr[1:10])
#如果结束参数比字符串大,会取到字符串的结尾
print("结束位置过大:",varStr[1:1000])
#从头开始取
print("从头开始取:",varStr[:4])
#取到末尾
print("取到末尾:",varStr[4:])
#指定字符间隔
print("指定字符间隔:",varStr[1:10:2])
print("指定字符间隔:",varStr[::2])
输出如下:
取一个字符: 1
起始与结束位置: 123456789
结束位置过大: 123456789abcdef
从头开始取: 0123
取到末尾: 456789abcdef
指定字符间隔: 13579
指定字符间隔: 02468ace