字符串
字符串索引正序从0开始,倒序从-1开始。
a='123456789'
i=0
while i<len(a):
print(a[i])
i+=1
将a倒过来输出:
for i in range(-1,-len(a)-1,-1):
print(a[i])
切片
切片格式:[起始索引:结束索引:步长]
注:
步长可以省略,默认为1
包括开头不包括结尾。
a='123456789'
print(a[0:5:2])
print(a[3:])
print(a[:5])
print(a[:])
print(a[3::3])
print(a[:4:3])
print(a[3:0:-1])
print(a[::-1])
print(a[-1:-5:-2])
print(a[-8:5])
print(a[0:-7])
print(a[-1:-5:-1])
print(a[-5:-1])
输出结果为:
字符串函数
一、字符串的查找
函数名 | 功能 |
---|---|
find() | 查找,返回从左第一个指定字符的索引,找不到返回-1 |
rfind() | 查找,返回从右第一个指定字符的索引,找不到返回-1 |
index() | 查找,返回从左第一个指定字符的索引,找不到报错 |
rindex() | 查找,返回从右第一个指定字符的索引,找不到报错 |
count() | 计数,返回子串在母串的个数 |
二、字符串的拆分
函数名 | 功能 |
---|---|
partition() | 把母串以第一个子串分割为三个部分,子串前边,子串,子串后边 |
splitlines() | 按照行分割,返回一个包含各行的作为元素的列表,按照换行符分割 |
split() | 按照指定的内容进行分割,maxsplit:默认将指定的所有的内容进行分割,可以指定值 |
a="123ab456"
x=a.partition("ab")
print(x)
a="123a456a789a0"
b=a.split('a')
print(b)
a="123a456a789a0"
b=a.split('a',maxsplit=2)
print(b)
a='abc\n123\n45'
b=a.splitlines()
print(b)
b=a.split('\n')
print(b)
三、字符串的替换
函数名 | 功能 |
---|---|
replace() | 从左到右替换指定的元素,可以指定替换的个数,默认全部替换 |
translate() | 按照对应关系来替换内容 |
a="123abc456abc"
b=a.replace("abc","uio",1)
print(b)
a='123abc456abc'
b="1234567"
c="abcdefg"
table=str.maketrans(b,c) # 创建映射表,b和c的长度必须一样,组成成映射表
b=a.translate(table) # 通过映射表,进行替换生成新的串
print(b)
四、字符串的修饰
函数名 | 功能 |
---|---|
center() | 让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充 |
ljust() | 让字符串在指定的长度居左,可以指定填充内容,默认空格填充 |
rjust() | 让字符串在指定的长度居右,可以指定填充内容,默认空格填充 |
zfill() | 将字符串填充到指定的长度,不足地方用0从左开始补充 |
format() | 按照顺序,将后边的参数传递给前面的大括号 |
strip() | 默认去除两边的空格,去除内容可以指定 |
rstip() | 默认去除右边的空格,去除内容可以指定 |
lstip() | 默认去除左边的空格,去除内容可以指定 |
a="123"
b=a.center(7,"*") # 居中
print(b)
b=a.ljust(7,"*") # 居左
print(b)
b=a.rjust(7,"*") # 居右
print(b)
a="123"
b=a.zfill(10) # 在左边填充0
print(b)
a=" 123 "
b=a.strip() # 去除所有空格
print(b,end=".")
print()
b=a.lstrip() # 去除左边空格
print(b,end=".")
print()
b=a.rstrip() # 去除右边空格
print(b,end=".")
a="###123####"
print(a.strip("#"))
print(a.lstrip("#"))
print(a.rstrip("#"))
# format用法
a="我叫{},我今年{}岁".format("lee",20)
print(a)
a="我叫{0},姓名{0},年龄{1}".format("lee",20)
print(a)
print("我叫{name},年龄{age},姓名{name}".format(name="lee",age=18))
a="我叫{:@^6}".format("赵六")
print(a)
# 意思就是将后边的字符串补充到前边,如果不够格式中后边的数字的长度,则用冒号后边的字符补齐。^代表后边的字符居中,<代表后边的字符居左,>代表后边的字符居右。
# ^代表赵六居中
# >代表赵六居右
# <代表赵六居左
# :@代表填充@字符,冒号后边的就是填充的字符
# 后边的数字代表总长度
a="二进制{:b}".format(10)
print(a)
x=bin(10)
print(x)
b="八进制{:o}".format(10)
print(b)
y=oct(10)
print(y)
c="十六进制{:x}".format(10)
print(c)
z=hex(10)
print(z)
字符串格式化:
name="张三"
age=18
height=1.75
# %s代表字符串,%f代表小数,%i或%d代表整数
x="我叫%s身高%f年龄%i"%(name,height,age)
print(x)
# %%代表百分号
x=0.25
a="成材率%.2f%%"%(x)
print(a)
五、字符串变形
函数名 | 功能 |
---|---|
upper() | 将字符串中的所有字母转换为大写 |
lower() | 将字符串中的所有字母转换为小写 |
swapcase() | 将字符串中的所有字母大小写互换 |
title() | 将字符串当中的单词首字母大写,单词以非字母划分 |
capitalize() | 只有这个字符串的首字母大写 |
expandtabs() | 把字符串中的“\t”转换为空格,默认的空格数是8 |
六、字符串判断
函数名 | 功能 |
---|---|
isalnum() | 判断字符串是否完全由字母或数字组成 |
isalpha() | 判断字符串是否完全由字母组成 |
isdigit() | 判断字符串是否完全由数字组成 |
isupper() | 判断字符串当中的字母是否完全是大写 |
islower() | 判断字符串当中的字母是否完全是小写 |
istitle() | 判断字符串是否满足title格式 |
isspace() | 判断字符串是否完全由空格组成 |
startswith() | 判断字符串是否以后面的参数开头 |
endswith() | 判断字符串是否以后面的参数结束 |
七、dir()和help()内置函数
dir()函数可以列出字符串对象中的所有方法、属性列表,可以使用help()查看具体的介绍。
字符串编码
encode是编码,将字符串转换为字节码
decode是解码,将字节码转换为字符串
a="la我"
b=a.encode()
print(b)
c=b.decode()
print(c)
转义字符
转义 | 意义 |
---|---|
\\ | 产生一个反斜杠符号(\) |
\’ | 产生一个单引号(’) |
\" | 产生一个双引号(") |
\n | 表示换行 |
\t | 横向制表符(占8个字符,如果前面少于8个字符则剩余字符使用空格表示) |
\ | 表示续行 |
元字符串
在任意字符串前加上“R ”或“r”,那么字符串中所有转义字符在使用时都不会进行转义操作。
a=r"E:\test\nex.txt"
print(a)