'''
汉字在GBK/GB2312编码中占2个字节,在UTF8/unicode编码中一般占3个字节(或4个字节)
在Python中汉字默认UTF-8编码,一般占据3个字节
'''
#len(string) 获取字符串长度。所有字符都按一个字符计算
str1 = "人生苦短,我用python。"
print(len(str1)) # 14
#获取字符串实际的所占字节数,使用encode()先进行编码再获取
print(len(str1.encode())) #30
#切片方式截取字符串 string[start : end : step]
'''
start默认为0,end默认是最后一个字符,step默认为1
字符串中字符索引默认从0开始,并且每个字符占一个位置
'''
try:
substr1 = str1[:5]
print(substr1)
except IndexError:
print("指定索引不存在")
# 分割 # 合并
'''
分割:把字符串分割为列表
合并:把列表合并为字符串
分割 str.split(seq, maxsplit)
seq 默认为Node,表示所有的空字符(空格,\n,\t等)
maxsplit 分割次数,默认为-1
'''
str2 = "明 日 学 院 官 网 >> > www.mingrisoft.com"
print(str2.split()) #['明', '日', '学', '院', '官', '网', '>>>', 'www.mingrisoft.com']
print(str2.split(">>>")) #['明 日 学 院 官 网 ', ' www.mingrisoft.com']
print(str2.split(" ", 4)) #['明', '日', '学', '院', '官 网 >>> www.mingrisoft.com']
#指定分割符号后,两个分割符中间如果没有内容则产生空元素
print(str2.split(">")) #['明 日 学 院 官 网 ', '', ' ', ' www.mingrisoft.com']
'''
合并
strnew = string.join(iterable)
'''
list_str = ['小明', 'xiaohua', 'xiaozhang', 'xiaoxie']
str_ = '@'.join(list_str)
print(str_)
#检索字符串
'''
1.str.count(substr[, start[, end]]) 返回出现次数,否则为0
2.str.find(substr[, start[, end]]) 找到子串第一次出现的位置,否则为-1
用in关键字也可以判断字符串中是否存在子串,返回True或False
3.str.index(substr[, start[, end]]) 与find()相同,当子串不存在时,抛出异常
4.startswith() endswith() 返回True或False
'''
#大小写转换
'''
str.lower() str.upper()
'''
#去掉左或右或左右特殊字符(可指定)
'''
str.strip([char])
str.lstrip([char])
str.rstrip([char])
'''
#格式化字符串
'''
先制定模板,预留空位(占位符),再填充相应内容
1.新字符串 = 模板字符串%内容
2.新字符串 = 模板字符串.format(内容)
'''
template = ('编号:%05d\t公司名称:%s')
context = (9, "百度百科")
print(template%context)
#字符串编码
'''
最早的字符串编码是美国的ASCII码。
我国定义的字符串编码是GBK,GB2312,一个字节表示英文字符,两个字节表示中文字符
国际通用的字符编码是UTF-8,一个字节表示英文,三个字节表示中文字符
在python中,有两种字符串类型,分别是str和bytes。
str在内存中以unicode表示,一个字符对应若干个字节,但是如果在网络上传输,或者保存到磁盘
需要把str转成字节类型,即bytes类型
'''
# encode() 编码 decode() 解码
verse = '野渡无人舟自横'
byte1 = verse.encode('GBK')
byte2 = verse.encode('UTF-8') #默认为utf-8
print('utf-8:', byte2)
print('GBK:', byte1)
'''
1.序列结构:列表,元组,集合,字典,字符串
其中 集合 字典 不支持相加(+)相乘(*)操作
2.两种相同的序列相加,即将两个序列进行连接,生成一个新的序列
例如:不能将字符串直接和数值拼接+
'''
#字符串拼接的几种方式
'''
1.使用+连接字符串,使用str()函数将数字转换为字符串
'''
print("我最喜欢的数字" + ":" + str(9) + "。")
'''
2.使用逗号连接字符串
'''
num = 9
print("我最喜欢的数字:", num, "。") #逗号分隔,中间默认用空格隔开
'''
3.使用%连接字符串
'''
print("我最喜欢的数字:%d。"%num)
print("我最喜欢的数字:%s。"%num)
'''
4.使用str.format()连接字符串,注意{}的数量
'''
print("我最喜欢的数字{}和{}。".format(num, 8))
'''
5.python3.6.2中提出来新的字符串格式化机制“字符串插值”
'''
print(f"我最喜欢的数字{num}。")
'''
6.通过str.join()方法拼接
'''