字符串
字符串索引字符串切片字符串拼接赋值语句形式format()字符串格式化字符串的查找字符串的拆分字符串的替换字符串的修饰字符串变形字符串判断dir()和help()转义字符元字符串字符串编码
使用引号(单引号,双引号,三引号)引起来的内容就是字符串。
字符串定义:元素以引号包围
不可修改的
有序序列
字符串索引
字符串索引从零开始,倒序从-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
)