什么是字符串呢
被引号包裹的一切内容都是字符串,在python中,中文英文等句子需要由引号包裹,否则会报错
例如:
'被单引号包裹的字符串'
"被双引号包裹的字符串"
'''被三个单引号包裹的字符串'''
"""三个双引号包裹的字符串"""
句子无引号会报错
关于三个引号
三引号包裹的内容是字符串
三引号也可以作为多行注释(在上一篇文章我们提到过)
字符串索引(也叫下标)【重要,需要记住】
字符串是有顺序的,由左向右从0开始,我们可以通过顺序取值
str1 = 'abcdefg'# 定义一个字符串变量,内容是'abcdefg'
print(str1[0])# 输出a 因为a是第一个,他的索引是0
print(str1[2])# 输出c 因为c是第三个,他的索引是2
print(str1[6])# 输出g 因为g是第七个,他的索引是6
print(str1[-1])# 输出g 因为g是最后一个,他的索引可以由-1表示,其他的也可以通过负值取
字符串操作
字符串切片
切片方式:‘字符串’[开始索引:结束索引:步长]
注意:切片是左闭右开区间,左闭右开区间这个概念我们在上高中时有学过,
就是左侧的值可以取到,右侧的值只能取到比他小一位的数
切片基础操作
str1 = 'abcdefg'# 定义一个字符串变量,内容是'abcdefg'
print(str1)# 输出abcdefg
print(str1[0:2])# 输出ab a的下标是0,b的下标是1,由于是左闭右开区间,所以2取不到
print(str1[0:4:2])# 输出ac
# [0:4:2]解释:以步长为2的方式取0到3的值,所以只取到了下标0和2。 0下标对应的值是a,2对应的值是c,所以输出ac
切片高级操作
str1 = 'abcdefg'# 定义一个字符串变量,内容是'abcdefg'
print(str1[:])# 输出abcdefg 默认输出0到结尾
print(str1[::])# 输出abcdefg 默认输出0到结尾,步长1
print(str1[::-1])# 输出gfedcba 默认输出0到结尾,但是步长是-1 所以逆序了
print(str1[::-2])# 输出geca 逆序输出结尾到0,步长2
print(str1[2:-1])# 输出cdef 没有输出g是因为左闭右开区间
print(str1[2::])# 输出cdefg 不过多解释,这个是为了和下面做比较
print(str1[2::-1])# 输出cba 因为-1所以先进行逆序,然后2:: 代表从2取到0,所以输出cba
字符串拼接
+加号拼接
str1 = '字符串'
str2 = '拼接'
print(str1+str2)# 输出字符串拼接
f-string拼接
格式:f’’
解释:会解析{}内的变量
str1 = '字符串'
str2 = '拼接'
str_f = f'拼接:{str1}{str2}'
print(str_f)# 输出拼接:字符串拼接 解释:因为解析{}内的str1和str2, 其中字符串'拼接:'原样输出
字符串重复 *
str1 = '字符串重复,'
print(str1*3)# 输出字符串重复,字符串重复,符串重复,
字符串整体转大写 upper()
str1 = 'abc'
print(str1.upper())# 输出ABC
字符串整体转小写 lower()
str1 = 'ABC'
print(str1.lower())# 输出abc
每个单词首字母大写 title()
str1 = 'aa bb cc'
print(str1.title())# 输出Aa Bb Cc
字符串首字母大写 capitalize()
str1 = 'aa bb cc'
print(str1.capitalize())# 输出Aa bb cc
去除两端空格 strip()
str1 = ' a b c '
# strip去除两端空格(并不能去除中间空格,去除所有空格可以使用replace)
print(str1.strip())# 输出'a b c'
# lstrip去除左侧空格 l就是left(左)的首字母
print(str1.lstrip())# 输出'a b c '
# rstrip去除右侧空格 r就是right(右)的首字母
print(str1.rstrip())# 输出' a b c'
替换内容 replace()
格式:‘字符串’.replace(‘旧内容’,‘新内容’,‘替换次数’)
str1 = ' a b c '
print(str1.replace(' ', ''))# 输出'abc'
print(str1.replace(' ', '', 2))# 输出'ab c '
print(str1.replace('a', 'A'))# 输出' A b c '
字符串中是否只包含数字 isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False。
str1 = 'string'
print(str1.isnumeric())# 输出False
str1 = '123'
print(str1.isnumeric())# 输出True
str1 = 'string123'
print(str1.isnumeric())# 输出False
指定内容在字符串中出现的次数 isnumeric()
str1 = 'hello'.count('o')# 输出1
print(str1)
str1 = 'hello'.count('oo')# 输出0
print(str1)
指定内容是否包含在字符串中 find()
如果是返回开始的索引值,否则返回-1
s = 'string'
idx = s.find('t')
print(idx)# 输出1
s = 'string'
idx = s.find('tt')
print(idx)# 输出-1
指定内容是否包含在字符串中 index()
如果是返回开始的索引值,否则报错
s = 'string'
idx = s.index('t')
print(idx)# 输出1
s = 'string'
idx = s.index('tt')# 报错
字符串是否是以指定内容开头 startswith()
是返回True,否则返回 False
s = 'python'
print(s.startswith('p'))# 输出True
字符串是否是以指定内容结尾endswith()
是返回True,否则返回 False
s = 'python'
print(s.endswith('on'))# 输出True
字符串前面填充零 zfill()
返回指定长度的字符串,原字符串右对齐,长度不足则前面填充0
s = '11'.zfill(5)
print(s)# 输出00011
s = '-11'.zfill(5)
print(s)# 输出-0011
s = '+11'.zfill(5)
print(s)# 输出+0011
s = '11'.zfill(2)
print(s)# 输出11(因为填充长度为2)