字符串是一个有序的,不可修改的,元素以引号包围的序列。
python字符串的定义:双引号或者单引号中的数据,就是字符串
索引号从0开始,索引的用法,取单个元素时,使用字符串[索引值],索引值为对应元素的索引号
切片的语法:[起始:结束:步长]
字符串[start: end: step] 这三个参数都有默认值,默认截取方向是从左往右的
start:默认值为0;
end : 默认值未字符串结尾元素;
step : 默认值为1;
如果切片步长是负值,截取方向则是从右往左的
显示自定字符在字符串当中的个数
返回从左第一个指定字符的索引,找不到返回-1
返回从右第一个指定字符的索引,找不到返回-1
返回从左第一个指定字符的索引,找不到报错
返回从右第一个指定字符的索引,找不到报错
s = "hello world"
ret = s.count('l') # 统计字符串中该元素的个数
num = s.find('l') # 从左往右找索引
num = s.find('p') # 找不到就返回-1
num1 = s.rfind('l') # 从右往左找索引(索引的位置还是正序的)
num1 = s.rfind('p') # 找不到就返回-1
num2 = s.index('l') # 和find类似,区别在于找不到会报错,而find找不到会返回-1
# num2 = s.index('p') # 找不到就报错
num3 = s.rindex('l') # 和rfind类似,区别在于找不到的话会报错
# num3 = s.rindex('p')#找不到就报错
print(num3)
把mystr以str分割成三部分,str前,str自身和str后
按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割
按照指定的内容进行分割
用的多的主要还是split
s = "I \nLove \nYou"
print(s.partition('Love'))
print(s.splitlines())
# split()按指定内容进行拆分
s = 'hello world python'
ret = s.split(' ')
print(ret)
从左到右替换指定的元素,可以指定替换的个数,默认全部替换
按照对应关系来替换内容 from string import maketrans
主要用的多的还是replace
s = 'hello world python'
ret = s.replace('o', '0', 3) # 把o替换成0,换成前3个
print(ret)
# s = 'hello world python'
# intab = 'hello'
# outtab = 'javaa'
# ret = str.maketrans(intab, outtab)
# s2 = s.translate(ret)
# print(s2)
让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充
让字符串在指定的长度左齐,可以指定填充内容,默认以空格填充
让字符串在指定的长度右齐,可以指定填充内容,默认以空格填充
将字符串填充到指定的长度,不足地方用0从左开始补充
按照顺序,将后面的参数传递给前面的大括号
默认去除两边的空格,去除内容可以指定
默认去除右边的空格,去除内容可以指定
默认去除左边的空格,去除内容可以指定
'''
center:让字符串在指定的长度居中
如果不能居中则左短右长,默认填充为空格
可以设置成其它的填充
'''
# s = 'hello world'
# ret = s.center(30, '*')
# print(ret)
'''
ljust:让字符串在指定的长度左对齐
可以指定填充内容,填充右边)
rjust:与ljust相同,但是是右对齐
'''
# s = 'hello world'
# ret = s.ljust(30, '^')
# ret1=s.rjust(30,'^'
# print(ret)
# print(ret1)
'''
zfill:让字符串填充到指定的长度
不足的地方用0从左开始填充
'''
# s = 'hello world'
# ret = s.zfill(20)
# print(ret)
'''
strip:默认去除两边的空格
去除内容可以指定
'''
# s = ' hello world '
# print(s)
# ret = s.strip()
# print(ret)
'''
rstrip:默认去除右边的空格
lstrip:默认去除左边的空格
去除内容可以指定
'''
s = '*******hello world**********'
print(s)
ret = s.rstrip('*')
print(ret)
ret1 = s.lstrip('*')
print(ret1)
# msg = '大家好我叫{},今年{}岁了'
# print(msg.format('李嘉豪', 10))
#
# msg1 = '我今年{1}了,我的名字是{0},我叫{0},今年{1}岁了'
# print(msg1.format('李嘉豪', 21))
# print('我叫{},今年{}岁了,老家在{}'.format('李嘉豪', 20, '江西'))
# msg = '大家好我叫{name}!我今年{age}岁了!'
# print(msg.format(age=19, name='李嘉豪'))
# 使用关键字参数,就可以不按位置顺序
# :[填充字符][对齐方式 <^>][宽度]
# msg = '大家好我叫{:*<10}!我今年{: ^10}岁了!身高是{:>10}米'
# print(msg.format('李嘉豪', 21, 1.78))
# 精度
# long = 1.321
# wide = 0.98
# area = long * wide
# print('长方形的长是{:.2f}cm,宽是{:.3f}cm,面积是{:.5f}平方厘米'.format(long, wide, area))
# 进制
# print('二进制:{:b}'.format(10))
# print('八进制:{:o}'.format(20))
# print('十六进制:{:x}'.format(30))
# 百分号格式
name = '李嘉豪'
age = 21
height = 1.78
weight = 70
msg = "姓名:%s,年龄:%d,身高:%.2f,体重:%d公斤,目前学习的进度是10%%" % (name, age, height, weight)
print(msg)
将字符串当中所有的字母转换为大写
将字符串当中所有的字母转换为小写
将字符串当中所有的字母大小写互换
将字串符当中的单词首字母大写,单词以非字母划分
只有字符串的首字母大写
把字符串中的 tab 符号(’\t’)转为空格,tab 符号(’\t’)默认的空格数是 8
s10 = 'hello Python'
print(s10.upper())
print(s10.lower())
print(s10.swapcase())
print(s10.title())
print(s10.capitalize())
s11 = 'hello\tpython'
print(s11.expandtabs())
判断字符串是否完全由字母或数字组成
判断字符串是否完全由字母组成
判断字符串是否完全由数字组成
判断字符串当中的字母是否完全是大写
判断字符串当中的字母是否完全是小写
判断字符串是否满足title格式
判断字符串是否完全由空格组成
判断字符串的开头字符,也可以截取判断
判断字符串的结尾字符,也可以截取判断
判断字符串的分隔符切片
s = 'hello python'
print(s.isalnum())
print(s.isalpha())
print(s.isdigit())
print(s.isupper())
print(s.islower())
print(s.istitle())
print(s.isspace())
print(s.startswith('he', 0, 7))
print(s.endswith('n', 0, 12))
编码,将字符串转换成字节码。str–>byte
解码 ,将字节码转换成字符串。 byte–>str
Unicode是一个规则,UTF-8是具体的实现。
英语国家发明计算机,编码表只有127个字母,这个编码表被称为ASCII编码,一个编码占一个字节大小。
中国制定了GB1212编码。
而所有语言都统一到了一套编码里,就是Unicode,一个编码占2个字节。
UTF-8把Unicode编码转化,常用的英文字母占1个字节,汉字通常是3个字节。
s = '我'
s1 = s.encode()
print(s1) #b'\xe6\x88\x91'
print(s1.decode()) #我
s2 = s.encode(encoding='gbk')
print(s2) #b'\xce\xd2'
print(s2.decode(encoding='gbk')) # 解码的时候也是用encoding='gbk' #我
将元素以指定的链接符拼接成一个新的字符串
s = 'hello'
print('_'.join(s)) #h_e_l_l_o