使用引号(单引号,双引号,三引号)引起来的内容就是字符串。
字符串定义:元素以引号包围 不可修改的 有序序列
字符串索引
字符串索引从零开始,倒序从-1开始
# 字符串索引
a = '123abc'
print(a[0])
print(a[3])
i = 0
while i < len(a):
print(a[i])
i += 1
a = '123abc'
for i in range(len(a)):
print(a[i])
a = '123abc'
for x in a:
print(x)
a="123abc"
print(a[-1])
for i in range(-1,-len(a)-1,-1):#步长是-1
print(a[i])
i=-1
while i>-len(a)-1:
print(a[i])
i-=1
字符串切片
# 切片
a = '123abcd'
b = a[0:5]
print(b) # 123ab
for i in range(0, 5):
print(a[i], end=" ") # 1 2 3 a b
print()
for i in range(0, 5, 2):
print(a[i], end=" ") # 1 3 b
print()
a = '123abcd'
print(a[3:]) # abcd
a = '123abcd'
print(a[:5]) # 123ab
a = '123abcd'
print(a[:]) # 123abcd
a = '123abcd'
print(a[::3]) # 1ad
a = '123abcd'
print(a[3::3]) # ad
a = '123abcd'
for i in range(3, 7, 3):
print(a[i], end="") # ad
print()
a = '123abcd'
print(a[:4:3]) # 1a
a = '123abcd'
print(a[3:0:-1]) # a32 前闭后开
a = '123abcd'
print(a[::-1]) # dcba321 逆序输出
a = '123abcd'
print(a[-1:-5:-2]) # db
a = '123456789'
print(a[-8:5]) # 2345
a = '123456789'
print(a[0:-7]) # 12从左向右,因为步长是1
a = '123456789'
print(a[-1:-5:-1])#9876
字符串拼接
# 字符串拼接
a = "我爱你"
b = "北京"
c = a + b
print(c) # 我爱你北京
a = "你好" * 3
print(a) # 你好你好你好
赋值语句形式
# 赋值语句形式
a, b = "12"
print(a) # 1
print(b) # 2
a, *b = "123"
print(a)
print(b) # ['2', '3']
format()
# 字符串格式化-format()
a = "我叫{},年龄{}".format("张三", 29)
print(a) # 我叫张三,年龄29
# 用的下标索引
a = "我叫{0}姓名{0}年龄{1}".format("李四", 32)
print(a) # 我叫李四姓名李四年龄32
# 用的关键字
print("我叫{name}姓名{name}年龄{age}".format(name="王五", age=28))
a = "我叫{:#^6}".format("赵六")
print(a)
# ^ 赵六居中 我叫$$赵六$$
# < 赵六居左 我叫赵六$$$$
# > 赵六居右 我叫$$$$赵六
# :号后面的是填充的字符 $,{:#^6},补充的就是 #我叫##赵六##
# 最后面的数字:占的总长度:上题赵六不足六个字符,所以需要补充四个字符
#进制
a="二进制{:b}".format(10)
print(a)
x=bin(10)
print(x,type(x))
a="八进制{:o}".format(10)
print(a)
x=oct(10)
print(x,type(x))
a="十六进制{:x}".format(10)
print(a)
x=hex(10)
print(x,type(x))
"""
运行结果:
二进制1010
0b1010 <class 'str'>
八进制12
0o12 <class 'str'>
十六进制a
0xa <class 'str'>
"""
字符串格式化
name='张三'
age=18
height=1.75
x="我叫%s 身高%f 年龄%d "%(name,height,age)
print(x)
x=0.25
a='成材率%0.2f%%'%(x)
print(a)
字符串的查找
a='abccdefgcd'
b='cd'
x=a.find(b)
print(x)#3 找到的返回第一个指定字符的索引
print(a.find('zz'))#-1 找不到返回-1
a='abccdefgcd'
b='acd'
x=a.rfind(b)
print(x)#找不到返回-1,所以一般开发会用
# a='abccdefgcd'
# b='acd'
# x=a.index(b)
# print(x)#没有的话会报错
# a='abccdefgcd'
# b='acd'
# x=a.rindex(b)
# print(x)#没有的话会报错
a='abccdefgcdecd'
b='cd'
x=a.count(b)
print(x)#3
用函数完成find功能
a=input("请输入一个长串")
b=input("请输入一个短串")
i=0
while i<=len(a)-len(b):
j=0
while j<len(b):
if a[i+j]!=b[j]:
break
j+=1
if j==len(b):
print(i)
break
i+=1
else:
print(-1)
a=input("请输入一个长串")
b=input("请输入一个短串")
for i in range(0,len(a)-len(b)+1):
for j in range(0,len(b)):
if a[i+j]!=b[j]:
break
j+=1
if j==len(b):
print(i)
break
i+=1
else:
print(-1)
字符串的拆分
# 字符串的拆分
a = '123ab456ab789'
x = a.partition("ab") # 分割成三部分前一部分,自身和后面部分
print(x)
a = '123a456a789a0'
b = a.split('a') # 按照指定的内容进行分割
print(b)
a = "2019-7-24"
b = a.split('-')
print(b)
a = '123ab456ab789ab000'
b = a.split('ab', maxsplit=1) # 切割数
print(b)
a = "abc\n123\n45"
b = a.splitlines()
print(b)
a = "abc\n123\n45"
b = a.split('\n')
print(b)
a = "abc\n123\n45"
i = 0
while i < len(a):
if a[i] == '\n':
print()
else:
print(a[i], end="")
i += 1
字符串的替换
makestrans()用法:
用于创建字符映射表的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串,表示转换的目标。
两个字符串需要长度相同,一 一对应。
# 字符串的替换
a = "123abc56abc"
b = a.replace('abc', 'xy')
print(b) # 123xy56xy
print(a) # 123abc56abc a没变
s = "1234567890111"
a = '1234567'
b = 'abcdefg'
table = str.maketrans(a, b) # 创建映射表,a\b的长度必须一样,组合成映射表
b = s.translate(table) # 通过映射表,进行替换生成新的串
print(b)
print(b) # 123xy56xy
print(a) # 123abc56abc a没变
字符串的修饰
# 字符串的修饰
a = '123'
b = a.center(7, '*') # 居中,默认是空格,现在补全用*
print(b)
a = '123'
b = a.ljust(10, '$') # ‘123’居左,默认是空格,现在补全用$
print(b)
a = '123'
b = a.rjust(10, '$') # 居右,默认是空格,现在补全用$
print(b)
a = '123'
b = a.zfill(10) # 用0填充
print(b) # 0000000123
a = ' 123 '
b = a.lstrip()
print(b, end="#")
print()
a = ' 123 '
b = a.rstrip()
print(b, end="#")
print()
a = ' 123 '
b = a.strip()
print(b, end="#")
print()
a = "###123####"
b = a.lstrip("#")
print(b)
c = b.rstrip("#")
print(c)
d = a.strip("#")
print(d)
字符串变形
# 字符串变形
a = "abcABC"
b = a.upper()
print(b) # ABCABC
a = "abcABC"
b = a.lower()
print(b) # abcabc
a = "abc DEF"
b = a.swapcase()
print(b) # ABC def
a = "what is your name"
print(a.title()) # What Is Your Name 单词首字母大写
a = "what is your name"
print(a.capitalize()) # What is your name 字符串首字母大写
a = "123\t456\txx"
print(a.expandtabs()) # 将
字符串判断
# 字符串判断
a = '123d'
b = a.isdigit() # 是否全是数字
print(b) # False
a = "azAs"
print(a.isalpha()) # True 是否是字母
a = "1243aZ"
b = a.isalnum() # 是否是字母或数字组成
print(b) # True
a = "abcA"
print(a.islower()) # False 是否全是小写
a = "abcA"
print(a.isupper()) # False 是否全是大写
a = "What is Your Name"
print(a.istitle()) # False,因为is小写了 是否满足title格式
a = " d "
print(a.isspace()) # False 是否完全由空格组成
a = "123abc"
print(a.startswith("abc")) # False 判断是以abc开始的吗,答案:不是
a = "123abc"
print(a.endswith("abc")) # True 判断是以abc结束的吗 答案:是
dir()和help()
# dir() help()
a = 'abc'
print(dir(a)) # 列出字符串对象中所有的方法的名称
a = 'abc'
print(help(a.replace)) # 查看函数内容
转义字符
#转义字符
a='tom\'s cat'#使用转义字符
print(a)
a="tom\'s cat"#使用双引号
print(a)
a="E:\\test\\next.txt"
print(a)
a=19
b=20
c=22
d=33
if a>33 and b>44 and c>55 and c<100 \
and a<300:
print("判断成功")#续行的功能
print('\c')
print('\\')
print('\n')
print('\t')
print('\'')
print('\"')
元字符串
在字符串前添加字母r或者R。
#元字符串
a=r"E:\test\next.txt"
print(a)#原样输出 E:\test\next.txt
字符串编码
a='1a我'
b=a.encode()#编码(encode) b'1a\xe6\x88\x91'
print(b)
c=b.decode()#解码(decode) 1a我
print(c)