字符串特征

一对引号字符串

name1 = ‘test’

name2 = ‘test2’

三引号字符串,支持回车换行

name3 = ''' test3'''

name4 = """test4 """

name1 = 'test'
print(name1)
print(type(name1))

name2 = "test2"
print(name2)
print(name2)
print(type(name2))

# 三引号
name3 = ''' test3
          sdf '''
print(type(name3))
name4 = """ test4 """
print(type(name4))

字符串下标

str = 'tester'

print(str[2])

切片

切片是指对操作的对象截取其中一部分的操作,字符串、元组、列表都支持切片操作

先切片,然后取切片里的步长,语法:

序列[开始位置下标: 结束位置下标:步长]

注意:不包含结束位置下标对应的数据,正负整数均可

步长是选取间隔,正负整数均可,默认步长为1

# 序列名[开始位置的下标:结束位置的下标:步长]
# 左闭,右开
str1 = '0123456789'
print(str1[2:8:2])

2345678 ,步长是2,最后展示的就是246.

如果不写步长,默认步长是1

# 序列名[开始位置的下标:结束位置的下标:步长]
# 左闭,右开
str1 = '0123456789'
print(str1[2:8])

输出是234567

如不写开始下标,默认是从0开始

# 序列名[开始位置的下标:结束位置的下标:步长]
# 左闭,右开
str1 = '0123456789'
print(str1[:3])

输出是012

如果结束下标不写,默认以最后下标结束

如果开始和结束下标都不写,默认已最初坐标开始,最后坐标结束

如果步长为负数,就倒序排列展示

字符串常用操作方法

查找、修改、判断

1、查找

查找子串在字符串中的位置或出现的次数

find():检测某个子串是否包含在这个字符串中,如果存在返回这个子串开始的位置下标,否则返回返回-1。

语法

字符串序列.find(子串,开始位置下标,结束位置下标)

注意的是开始和结束位置下标可以省略,表示在整个字符串序列中查找。

index() :检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则报异常

语法

字符串序列.index(子串,开始位置下标,结束位置下标)

注意的是开始和结束位置下标可以省略,表示在整个字符串序列中查找。

count():返回某个子串在字符串中出现的次数,查找子串找不到的时候,返回0

rfind() 和find() 功能相同,但是查找方向为右侧开始查找,查找从右侧开始查找,但是下标要从左侧开始计算

rindex() 和index()功能相同,但是查找方向为右侧开始查找,查找从右侧开始查找,但是下标要从左侧开始计算

str1 = 'hello world and python and python and python'
# print(str1.find('and'))  # 在整个字符串中查找and,找到后返回第一个下标,找不到返回 -1
# print(str1.find('and', 1, 28))  # 在下标1-28 查找and ,如果找到就返回第一个and的下标
# print(str1.find('ddd'))

print(str1.index('and'))
# print(str1.index('and', 1, 28))
# print(str1.index('dddd'))

# print(str1.count('and', 1, 28))  # 在整个字符串中查找and 子串的个数
#
# print(str1.count('ddddd'))  # 查找子串是ddddd,找不到的时候返回的是0

print(str1.rfind('and'))
print(str1.rindex('and'))

2、修改

通过函数的形式修改字符串中的数据

replace() 替换

语法

字符串序列.replace(旧子串,新子串,替换次数)

注意,替换次数如果不写,就代表全部替换

原有字符串调用replace()方法,原有字符串的值不变,生成了一个新的字符串,说明我们的字符串是不可变数据类型。

数据类型可以分为两个大的类型,可变类型和不可变类型,列表、字典内部数据是可变的。字符串数据是不可变类型

如果,替换的次数超出了,子串串的次数,它会替换所有子串。

# 1、replace()
str1 = 'hello world and python and python and python'
# 替换次数超出子串的次数,会替换所有子串
# new_str = str1.replace('and', 'he', 10)
# print(new_str)
# print(str1)

split() 按照指定字符分割字符串,返回的是一个列表list,会丢失我们的分割字符,如果字符被分割了num次,那么返回的数据应该是num+1个

语法

字符串序列.split(分割字符,num)

注意,num表示的是分割字符出现的次数,即将来返回数据个数为num+1个

# 2、split()   分割字符会被丢失,num是被分割是部分,最后返回的数据个数为num+1
print(str1.split('and', 2))
# 输出 ['hello world ', ' python ', ' python ', ' python']
# 输出 ['hello world ', ' python ', ' python and python']

jion(),合并列表里面的字符串为一个大的字符串

语法

字符或子串.jion(多字符串组成的序列)

# 3、jion()
mylist = ['aaaa', 'bbbb', 'cccc']
new_str = '...'.join(mylist)
print(new_str)
# 输出 aaaa...bbbb...cccc

不常用

大小写转化

capitalize()将字符串第一个字符转换成大写

# capitalize()
mystr = 'hello world and python and python'
str = mystr.capitalize()
print(str)
# 输出 Hello world and python and python

title() 将字符串每个单词首字母转成大写

mystr = 'hello world and python and python'
str1 = mystr.title()
print(str1)
# Hello World And Python And Python

lower(): 将字符串中大写转小写

mystr = 'hello World and python and python'
str2 = mystr.lower()
print(str2)

upper():将字符串中小写转大写

mystr = 'hello World and python and python'
str3 = mystr.upper()
print(str3)

lstrip():删除字符串左侧空白字符

mystr = '  hello World and python and python  '
str4 = mystr.lstrip()
print(str4)

rstrip():删除字符串右侧空白字符

mystr = '  hello World and python and python  '
str5 = mystr.rstrip()
print(str5)

strip():删除字符串两侧空白字符

mystr = '  hello World and python and python  '
str6 = mystr.strip()
print(str6)

ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串

字符串序列.ljust(长度,填充字符)

Python基础-字符串_子串

rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串

字符串序列.rjust(长度,填充字符)

Python基础-字符串_python_02

 

center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,

字符串序列.center(长度,'填充字符')

Python基础-字符串_子串_03

 

 3、判断

startswith(): 检查字符串是否是以指定子串开头,是则返回True,否则返回False,如果设置开始和结束位置下标,则在指定范围内检查

语法:

字符串序列.startswith(子串,开始位置下标,结束位置下标)

mystr = 'hello world'
print(mystr.startswith('hel', 0, 20))

endswith():检查字符串是否以指定子串结尾,是则返回True,否则返回False,如果设置开始和结束位置下标,则在指定范围内检查

语法:

字符串序列.endswith(子串,开始位置下标,结束位置下标)

# 检查字符串是否以指定子串开头
mystr = 'hello world'
print(mystr.endswith('rld', 0, 50))

isalpha():如果字符串中至少有一个字符并且所有字符都是字母则返回True,否则返回False,注意空格也是字符

mystr1 = 'hello1'
print(mystr1.isalpha())

isdigit():如果字符串只包含数字则返回True,否则返回False

mystr1 = '3242341'
print(mystr1.isdigit())

isalnum():如果字符串至少有一个字符并且所有字符都是字母、数字、字母和数字组合,则返回True,否则返回False

mystr2 = '1233sad'
print(mystr2.isalnum())

isspace():过字符串中只包含空格,则返回True,否则返回False

mystr3 = ' '
print(mystr3.isspace())

4、总结

下标:为数据序列每个元素分配的从0开始的编号

切片:序列名[开始位置下标:结束位置下标:步长]

常用操作方法:

find()

index()