# 字符串
'''
字符串是由若干个不同的Unicode字符组成的不可变有序序列
'''
# 1.创建字符串
"""
单引号字符串
str1 = '张三'
双引号字符串
str2 = "李四"
三引号字符串,多行字符串
str3 = '''
王五爱张三
张三爱李四
李四爱王五
'''
"""
# 2.获取字符
'''
因为是不可变序列,所以不能修改单个字符;凡是修改字符串的操作都能产生新的字符串
str1 = "老鼠爱大米"
print(str1[0],str1[-1]) ==> 老,米
'''
# 3.字符串转义
'''
常见转义字符
转义字符 说明
\' 单引号
\" 双引号
\n 换行
\r 回车
\t tab
\\ \
原生字符
如果在字符串中不把\当做转义字符,可以使用
str1 = r'C:\Misc\BrSelfExp'
print(str1) ==> C:\Misc\BrSelfExp
'''
# 4.序列通用操作
'''
字符串拼接
#对于字符串字⾯值,只要相邻两个字符串中间没有其他字符就会⾃动拼接为⼀个字符
串
str1 = '床前明月光'
'疑是地上霜'
print(str1) ==> 床前明月光疑是地上霜
其他情况使⽤+运算符拼接字符串
str1 = '你好'
str2 = ' 树先⽣'
print(str1 + '世界')
print(str1 + str2)
字符串重复
str1 = '汪' * 3
print(str1) ==> 汪汪汪
成员操作
str1 = '天要下⾬,由他去吧'
if '天' in str1:
print('是成员')
else:
print('不是成员')
字符串截取(切⽚)
str1 = '123456'
print(str1[0:2]) #'12'
print(str1[1:]) #'23456'
print(str1[::2]) #'135'
print(str1[:]) #'123456'
print(str1[::-1]) #'654321'
字符串⻓度
print(len(str1))
'''
# 5.字符串常用函数
'''
ctrl + 鼠标右键查看该函数用法,可指定其他参数
1.字符串的查找和替换
str1 = 'Accept yourself and love yourself for who you are'
str.count(sub,start=0,end=len(str)) ==> 查找子串sub出现的次数,start开始下标,end结束下标
str.find(str,beg=0,end=len(str)) ==> 从左向右检测字符串中书否包含子字符串str,如果包含返回下标
否则返回-1。beg和end是可选的参数,指定查找的范围
str.rfind(str,beg=0,end=len(str)) ==> 从右向左
str.index(sub) ==> 作⽤类似find,但⼦串sub不存在会报错ValueError
str.rindex(sub) ==> 从右向左
str.replace(old, new) ==>返回⼀个新字符串,原串中的old被替换为new,可选参数count指定替换次数。
2.字符串分隔和组合
str.split(sep) ==> 将字符串拆分为以sep为分隔符的列表
str.rsplit(sep) ==> 作用同上,从右向左
str.partition(seq) ==> 将字符串拆分为一个有三个元素的元祖
str.rpatition(seq) ==> 作用同上
str.splitlines(seq) ==> 拆分一个包含多行的字符串,以每行为一个元素返回一个列表
str.join(seq) ==> 以指定字符串str作为分隔符,将seq对象中所有的元素合并为一个新的字符串;seq可以是字符串、列表等
3.字符串判断
str.isalpla() ==> 判断字符串是否由字母构成并且只包含字母,如果是返回True,反之False
str.isalnum() ==> 检测字符串是否由字母和数字组成,如果都是由字母和数字组成返回True,反之False
str.isdigit() ==> 检测字符串是否由数字构成,可检测byte类型
str.isnumeric() ==> 检测字符串是否由数字构成,可以检测汉子数字:十
str.isspace() ==> 检测字符串是否只有空格或tab构成
str.islower() ==> 检测字符串中字母字符是否全部由小写字母组成
str.isupper() ==> 检测字符串中的字母字符是否全部由大写字母组成
str.startswith(seq) ==> 用于判断字符串是否以指定子字符串开头,如果是则返回True,反之返回False
str.endswith(seq) ==> 用于判断字符串是否以指定子字符串结尾,如果是则返回True,反之返回False
4.字符串转换
str.lower() ==> 字符串转小写
str.upper() ==> 字符串转大写
str.swapcase() ==> 把字符串中的大小写字母互换,大写转换成消息,小写转换成大写。不管非字母类字符。
str.capitalize() ==> 将字符串的第一个字符转换成大写,其余的转换成小写
str.title() ==> 字符串中每个单词的首字母大写,其余小写
str.lstrip() ==> 去除字符串左边指定的字符,默认是去除空格
str.rstrip() ==> 去除字符串左边指定的字符,默认是去除空格
str.strip() ==> 去除字符串两边指定的字符,默认是去除空格
5.其他方法
将其他类型转换成字符串
print(str(90))
ord() 返回一个字符所对应的码值
print(ord('a'))
print(ord('中'))
chr() 输入一个unicode码,返回一个对应的字符。
print(chr(20013))
eval() 将字符串当做代码执行
age = 1
print(eval('age + 3')) ==> 4
print(eval('+123')) ==> 123
print(eval('3 + 2')) ==> 5
repr() 返回一个对象的String格式,适合机器执行
a = [20,30]
s1 = repr(a)
list1 = eval(s1)
list2 = str(a)
print(a == list1)
'''
# 6.字符串格式化
'''
用%格式化
typecode: d 将数值转换为整型显示;f 将数值转换为浮点数显示 s将数值转换为字符串显示
#⼤家好,我叫 王尼玛,我今年35岁了,我有5000000.687
print("⼤家好,我叫%s,我今年%d岁了,我有%f" % ('王尼玛',35,5000000.687))
用format格式化 {name}".format(name="seven")
tp1 = "I am {}, age {}, {}".format("seven", 18, 'alex')
tp2 = "I am {name}, age {age}, really
print(tp1) #I am seven, age 18, alex
print(tp2) #I am seven, age 18, really seven
print(tp3) #I am seven, age 18, money 88888
'''