1.字符串
' '? ? ? ? 单引号? ? ? ? " "? ? ? ? 双引号的地址相同
''' '''? ? ? ? 三引号代表原格式输出,地址和单双引号不同
==? ? ? ? is? ? ? ? 的区别:
==是比较内容,is是比较地址
input为底层内置函数,地址不同
s1 = 'abc'
s2 = "abc"
s3 = '''
abc'''
print(s1, s2, s3, id(s1), id(s2), id(s3)) # '''三引号占用的空间与单双引号不同('''三引号不在一行)
print(s1 == s2) # 比较的是内容
print(s1 is s2) # 比较的是地址
print(s2 == s3)
print(s2 is s3)
s4 = input() # input 内置函数,地址不同,输入123
s5 = input()
print(s4 == s5) # ture
print(s4 is s5) # false
# 常量赋值is为Ture,input输入底层做了处理所以地址不同
运行结果:?
abc abc
abc 2458593807304 2458593807304 2458594768408
True
True
False
False
123
123
True
False
?运算符
+????????相当于拼接
*????????相当于倍数
in?????????在...里面
not in? ? ? ? 不在...里面
# 字符串的运算符:+ *
s1 = 'abc'
s2 = 'def'
s3 = s1 + s2 # +相当于拼接
s4 = s1 * 5 # *倍数
print(s3)
print(s4)
# in 在...里面
name = 'hello'
result = 't' in name # 返回值为布尔类型 Ture False
print(result)
# not in 不在...里面
运行结果:
abcabc abcabcabcabcabc False?
字符串的格式化:
%? ? ? ? 格式化表示
r? ? ? ? 保留原格式,有r不发生转义
\n换行 \r回车 \'单引号 \"双引号 \t制表位4空格
# % 字符串的格式化
print('%s说:%s' % (name, '大家好好学习'))
# r 保留原格式 有r则不发生转义,没有则转义(例如:\')
print(r'%s说:\'hahaha\' ' % name)
# 运行结果:
# hello说:大家好好学习
# hello说:\'hahaha\'
2.字符串的下标
# [] [:]
filename = 'picture.jpg'
print(filename[5]) # 通过[] 结合位置 获取字母 特点:只能获得一个字母,从0开始,包前不包后
# range(1,10) 类似[1:10] 包前不包后
print(filename[0:9])
# 省略
print(filename[3:]) # 省略后面,取到结尾
print(filename[:7]) # 省略前面,从0取值
# 负数
print(filename[7:-2])
print(filename[:-2])
print(filename[-2:-3]) # 从左往右取值,从左往右是-1,-2...
# [::]
print(filename[::-1]) # 倒叙输出,第三个数值的正负情况代表方向
str1 = 'abcdefg'
print(str1[-1:-5:-1])
print(str1[0:-5:-1])
print(str1[5:0:-1]) # -1代表方向
print(str1[-1:-5:-1])
print('---', str1[-7:-2:2])
# str[start:end:方向和步长]
运行结果:?
r
picture.j
ture.jpg
picture
.j
picture.j
空的
gpj.erutcip
gfed
空的
fedcb
gfed
--- ace
3.字符串的内建函数
声明一个字符串,默认可以调用的
1)第一部分:大小写相关的
capitalize()? ? ? ? ?将字符串的第一个字母大写
title()? ? ? ? 将字符串的每个单词首字母大写
upper()? ? ? ? 将字符串的每个字符都大写
lower? ? ? ? 将字符串的每个字符都小写
istitle()? ? ? ? 判断字符串的每个单词是否是大写,返回值为布尔类型
message = 'zhangsan is a beautiful girl !'
message1 = message.capitalize() # 将字符串的第一个字符改为大写
print(message1)
message2 = message.title() # 将字符串每个单词首字母大写
print(message2)
message3 = message.upper() # 将字符串每个字母转为大写
print(message3)
message4 = message3.lower() # 将字符串每个字母转为小写
print(message4)
运行结果:
Zhangsan is a beautiful girl ! Zhangsan Is A Beautiful Girl ! ZHANGSAN IS A BEAUTIFUL GIRL ! zhangsan is a beautiful girl !
2)第二部分:查找替换相关
find()? ? ? ? 查找,返回值为字母第一次出现的位置,返回值为-1则没找到
find('要查找的字符', start, end)? ? ? ? 指定范围查找
rfind()? ? ? ? 从左开始查找
lfind()? ? ? ? 从右开始查找
index()? ? ? ? 用法同find,但是没有找到会报错
rindex()
lindex()
replace()? ? ? ? replace(old, new, 替换次数)
s1 = 'hello money good sha'
result = 'l' in s1
print(result)
position = s1.find('b') # 返回值为-1则没找到
print(position)
position = s1.find('l') # 如果可以找到则返回字母第一次出现的位置
print(position)
# find('要查找的字符',start,end)
p = s1.find('a', position + 1, len(s1) - 5) # 指定开始位置查找
print(p)
ur1 = 'https://img.alicdn.com/imgextra/i4/O1CN01ureDCo1Pr2PUifCqa_!!6000000001893-2-tps-520-280.png'
p = ur1.rfind('/') # right find 从右开始查找检索
filename = ur1[p:]
print(filename)
'''
index() 与find方法一样,查找没有结果会报异常
s1 = 'hello money good sha'
result = s1.index('b')
print(result)
'''
# 替换
# replace(old,new,替换次数)
s1 = 'hello money good sha'
s2 = s1.replace(' ', '#')
print(s2)
运行结果:
True -1 2 -1 /O1CN01ureDCo1Pr2PUifCqa_!!6000000001893-2-tps-520-280.png hello#money#good#sha
3) 第三部分:字符串编码解码
encode()? ? ? ? 编码
decode()? ? ? ? 解码
# 编码:
msg = '开学了,要上学了' # 中文
# gbk 中文 gb2312 简体中文
result = msg.encode('utf-8')
print(result)
# 解码:
m = result.decode('utf-8')
print(m)
运行结果:
b'\xe5\xbc\x80\xe5\xad\xa6\xe4\xba\x86\xef\xbc\x8c\xe8\xa6\x81\xe4\xb8\x8a\xe5\xad\xa6\xe4\xba\x86'
开学了,要上学了
4) 第四部分:字符串判断开头结尾,是否为数字
startswith()? ? ? ? startswith判断是否为---开头
endswith()????????endswith判断是否为---结尾
isalnum()? ? ? ? 字符串至少一个字符且都是字母数字返回真
isalpha()? ? ? ? 字符串至少一个字符且都是字母返回真
isdigit()? ? ? ? 字符串至少一个字符且都是数字返回真
s = 'hello'
result = s.startswith('he')
print(result)
filename = '笔记.doc'
result = filename.endswith('doc')
print(result)
s = 'abcd6'
result = s.isalpha()
print(result)
s = '6688'
result = s.isdigit()
print(result)
'''
运行结果:
True
True
False
True
'''
5) 第五部分:字符串内建函数join等
join()? ? ? ? '+'.join('abc')? ? ? ? 将abc用+连接起来为新的字符串
strip()? ? ? ? 去除字符串空格
split()? ? ? ? 分割字符串,将分割后的保存在列表中
count()? ? ? ? 求字符串中指定检索内容的数量
new_str = '-'.join('abc')
print(new_str)
list1 = ['a', 'v', 'b', 'd']
result = ''.join(list1)
print(result)
# strip 去除字符串空格 lstrip左侧空格 rstrip右侧空格
s = ' hello '
s = s.strip()
print(s + '8')
# split() 分割字符串,将分割后的字符串保存在列表里
s = 'hello world hello kitty'
s = s.split()
print(s)
# split(' ',2) 按照空格作为分隔符,切割两次
# count 求字符串中指定检索内容的数量 count(abc) 求字符串中abc的个数
s = 'hello world hello kitty'
n = s.count(' ')
print('个数', n)
'''
运行结果:
a-b-c
avbd
hello8
['hello', 'world', 'hello', 'kitty']
个数 3
'''
|