if __name__ == '__main__':
str1 ="my name is XXX"
str2 ="XXX"
str3 ="breakloop"
str4=17
str5=234.56789
Python3中的字符串可以等同于字符串数组。例如
print("str1[0] =", str1[0])
print("str1[0:1] =", str1[0:1])
print("str1[0:2] =", str1[0:2])
print("str1[3:5] =", str1[3:7])
结果为
str1[0] = m
str1[0:1] = m
str1[0:2] = my
str1[3:5] = name
需要指出的是,:后的数字代表也是索引,而非长度。3:5,表示【3,5),包括3,不包括5.
那么问题来了,能否对str1中的数据进行修改呢?例如
str1[3]='a'
TypeError: 'str' object does not support item assignment
Python3中可以将数字类型的数据,以某种字符串格式输出。
print("str4 in d format %d"%str4)
print("str4 in o format %o"%str4)
print("str4 in x format %x"%str4)
print("str4 in s format %s"%str4)
print("str5 in d format %d"%str5)
print("str5 in e format %e"%str5)
print("str5 in f format %f"%str5)
print("str5 in .2f format %.2f"%str5)
结果为:
str4 in d format 17
str4 in o format 21
str4 in x format 11
str4 in s format 17
str5 in d format 234
str5 in e format 2.345679e+02
str5 in f format 234.567890
str5 in .2f format 234.57
%d,表示整型
%o,表示8进制
%h,表示十六进制
%s,表示字符型
%e,表示科学表示法,
%f,表示浮点型,若在f前加(.数字),表示小数点后保留的位数,不足则补0
与其它语言类似,字符串都有长度,是否包含,替换,去除头尾空格,分隔符,获取索引,添加等工具方法。
先看一个其它语言没有的操作方法,复制。
print("str3*2: ", str3*2)
print("str3=", str3)
输出结果为
str3*2: breakloopbreakloop
str3= breakloop
若在字符串后,使用(*数字)则表示,将字符串复制几次。
再来看几个简单操作。
print("str2 in str1? ", str2 in str1) #判断str1中是否包含str2
print("str3 replace str2, in str1: ", str1.replace(str2, str3))#将str1中的str2,用str3代替
print("str1=", str1)
print("str1 + str2: ", str1+str2)#连接str1和str2
print("str1=", str1)
相应输出结果为
str2 in str1? True
str3 replace str2, in str1: my name is breakloop
str1= my name is XXX
str1 + str2: my name is XXXXXX
str1= my name is XXX
再来看几个其它操作。
print("str3 length = ", len(str3)) #获取长度
print("str1 split by ''", str1.split(" ")) #使用空格为分隔符,分割str1
print("str1 strip", str1.strip()) #去除头尾的空格
print("how many 'm' in str1?", str1.count("m")) #查找str1中,m出现的次数
print("how many 'm' in str1, from index 1 to 5?", str1.count("m",1,5)) #查找str1中,m出现的次数,范围为【1,5)
print("how many 'm' in str1, from index 1 to 6?", str1.count("m",1,6)) #查找str1中,m出现的次数,范围为【1,6)
print("get the first index of 'm' in str1 :", str1.find("m")) #获取str1中第一个m的索引
print("get the first index of 'm' in str1, from index 1 to 5 :", str1.find("m",1,5)) #获取str1中第一个m的索引,范围为【1,5)
print("get the first index of 'm' in str1, from index 0 to 6 :", str1.find("m",0,6)) #获取str1中第一个m的索引,范围为【1,6)
结果为
how many 'm' in str1? 2
how many 'm' in str1, from index 1 to 5? 0
how many 'm' in str1, from index 1 to 6? 1
get the first index of 'm' in str1 : 0
get the first index of 'm' in str1, from index 1 to 5 : -1
get the first index of 'm' in str1, from index 0 to 6 : 0
需要指出的是,查找范围是【x,y)