1.程序中需要加上双引号或者双引号来表示字符串
2.字符串可以存放任意数量的字符,无法修改的数据容器
加法:多个字符串按照次序合并为一个字符串
在实际使用的时候,数字和字符串的加法通常需要将数字的类型转换成str
乘法:1个字符串乘以n,可以得到n个复制的字符串
例子:输入一个字符,使用该字符打印一个3层的金字塔
x=input(':')
print(" "+x)
print(" "+x+x+x)
print(x+x+x+x+x)
x=input(':')
print(" "*2+x)
print(" "+x*3)
print(x*5)
(1)len(字符串):统计字符串内的字符个数,中文也是一个字一个长度
my_str = "itCSDN and itlove"
num = len(my_str)
print(f"字符串{my_str}的长度是:{num}")
>>>最后的结果是:17
(2)字符串[下标]:根据下标索引取出特特定的位置字符
str = "mountain and sea"
str1 = str[3]
str2 = str[-2]
print(f"从字符串{str}取下标为3的元素,值是{str1},取下标为-2的元素,值是{str2}")
\>>>最后的结果是:从字符串‘mountain and sea’取下标为3的元素,值是n,取下标为-2的元素,值是e)
(3)字符串[m:n:i]:语法:序列[起始下标:结束下标:步长],起始下标可以留空,留空意味着从头开始,结束下标(不含)表示何处结束,可以留空,留空视为截取到结尾,步长表示依次取元素的间隔,步长为N意味着每次跳过n-1个元素进行取,步长为负数则意味着要反向取(起始下标和结束下标也要反向标记),此操作不会影响序列本身,会得到一个新的序列(元组,字符串,列表)
s1=str1[1:6:2](从1到6,不含6)
s2=str1[2:]#从下标2开始一直到最后
my _ str ="12345"
new _ str = my _ str [::-1]#从头(最后)开始,到尾结束,步长﹣1(倒序)
print ( new _ str )
#结果:"54321"
字符串支持判断子串是否存在,子串出现次数,子串出现的位置
str1=‘abcdefg’
(1)子串 in 字符串:子串在字符串中,返回True,否则返回False
f1='cd' in str1 #结果是True
f2='cd' not in str2 #结果是False
(2)(1)字符串.count(子串,起点,终点):统计字符串内某字符的出现次数
my_str = "itCSDN and itlove"
count = my_str.count("it")
print(f"字符串{my_str}中it出现的次数是:{count}")
\>>>最后的结果是:2
(3)字符串.find(子串,起点,终点):返回子串首次出现的下标位置,不包含则返回-1
n=str1.find('d') #3
(4)字符串.index(子串,起点,终点):查找给定字符的第一个匹配项的下标
str = "mountain and sea"
value = str.index("and")
print(f"在字符串{str}中查找“and”,其起始下标是{value}")
\>>>在字符串’mountain and seea’中查找“and”,其起始下标是9")#空格也算一个占位
字符串可以分解为列表,转换大小写,替换字串
(1)list.(字符串):把字符串按照元素依次分割,生成一个元素均为字符串的列表
l=list('abcd') #’a','b','c','d'
(2)字符串.split(字符串):(1)按照给定字符串,对字符串进行分隔,不会修改原来字符串,而是得到一个新的列表
my_str = "hello python itCSDN itlove"
my_str_list = my_str.split(" ")
print(f"将字符串{my_str}进行split切分后得到:{my_str_list}, 类型是:{type(my_str_list)}")
>>>结果是:[‘hello’,’python’,’itCSDN’,’itlove’]
L='a-b-c-d'.split('-') #结果是['a','b','c','d']
L='a-b-c- '.split('-') #结果是['a','b''c',' ']#最后多了一个空串
(3)字符串.join(列表):使用字符串把列表中的元素链接为一个新的字符串(元素要么是字符串,要是是列表,列表元素也是字符串)
S=’-‘.join('abc') #a-b-c
K=’#’.join['1','2','3']#1#2#3
join和split经常一起使用
(4)字符串.lower():字符串中的元素大写转成小写
S=‘AbCdE'.lower() #abcde
(5)字符串.upper():字符串中的元素小写转成大写
S=‘AbCdE'.lower() #ABCDE
(6)字符串.replace(要替换的1,替换字串2,替换字数):将字符串内的全部字符串1替换成字符串2(不修改字符串,得到一个新的字符串)
str = "itmountain and itsea"
new_str = str.replace("it","程序")
print(f"将字符串 {str},进行替换得到 {new_str}")
\>>>程序mountain and 程序sea
S='abcdef'.replace('ab','cd',2) #cccdef
字符串中没有直接使用下表修改的方法,要修改元素,只能使用replace
(7)字符串.strip()或者字符串.strip(字符串):移除首位的空格和换行符或者指定字符串字符串.strip():不传入参数时,去除首尾空格
my_str = " itCSDN and itlove "
new_my_str = my_str.strip() # 不传入参数,去除首尾空格
print(f"字符串{my_str}被strip后,结果:{new_my_str}")
>>>最后的结果是‘itCSDN and itlove’
字符串.strip(字符串)
my_str = “12itCSDN and itlove21”
new_my_str = my_str.strip(“12”)#传入的是12,其实是1和2都会移除,是按照单个字符1和2导入的
print(f"字符串{my_str}被strip(‘12’)后,结果:{new_my_str}")
>>>结果是itCSDN and itlove
字符串可以按照自定义的格式进行连接:通常有三种方式
1.百分号:
S1=’今天是%d月%d日'%(5,1)
2.format
s1='{},{}!'. format (' Hello ',' World ')
#默认位置,结果是' Hello , World !'
S2='{0},{0},{1}!'. format (' Hi ',' World ')#指定位置,结果是Hihi,World!
S3=' PI ={:.2f}'. format (3.141,3.151)
#默认位置,保留2位小数,结果' PI =3.14'
s4=' PI ={1:.2f}'. format (3.141,3.151)#指定位置,保留2位小数,结果' PI =3.15'
3.f’{变量}‘
x='PI'
v=3.1415926
s=f'{x}={v:.2f}’
s=‘{0:<10}{1:>5}’.format(‘x’,‘y’)
0位置变量x,左对齐(<),最小宽度10
1位置变量y,右对齐(>),最小宽度5
结果是‘x123456789
1234y’
while遍历:
s=’abcdef'
i=0
while i
for-in遍历
s=‘abcdef'
for c in s:
print(c,end='#')
如何判断字符串整体或者是单个字符元素是字母,数字还是其他字符呢
isalpha(是不是全是字母)
isdigit(是不是全是数字)
单个字符判断:’a’<=c<=‘z’or’A’<=c<=‘Z’ ‘0’<=c<=‘9’
写在最后:后续会更新字符串的相关习题,希望大家批评指正