关于字符串
字符串定义 初始化
s = r"hello \n mageedu.com"
s = R"c:\windows\nt"
字符串元素访问 --- 下标
字符串支持使用索引访问
sql = '' select from user where name = ' tom ' "
sql[4] # 字符串 ' c '
有序的字符集合,字符序列
for c in sql:
print(c)
print(type(c)) # 什么类型
可迭代
lst = list(sql)
字符串join连接
" string ".join(iterable) --> str
将可迭代对象连接起来,使用string 做分隔符
可迭代对象本身元素都是字符串
返回一个新字符串
lst = ['1' , '2' , '3']
print(" \" ".join(lst)) # 分隔符是双引号
字符串+连接
将两个字符串来连接在一起,返回一个新的字符串
字符串分割
分为两类
split 将字符串按照分隔符分割成若干字符串,并返回列表
partition 将字符串按照分隔符分割成两段,返回这两段和分割*符的元组
字符串大小写
upper() 全大写
lower() 全小写
swapcase() 交互大小写
字符串排版
title() -> str 标题每个单词都大写
capitalize() -> str 首个单词大写
center(width[,fillchar]) -> str width 打印宽度 ; fillchar 填充的字符
字符串修改
replace(old, new[,count]) --> str
字符串找到匹配替换为新字串,返回新字符串
字符串查找
index(sub[,start[,end]])->在指定区间[start,end),从左至右查找,没找到ValueError
len(string) 返回字符串长度,即字符的个数
字符串判断
endswith(suffix[,start[,end]]) -> bool
在指定的区间[start,end),字符串是否是suffix结尾
startswith(prefix[,start[,end]]) -> bool
在指定的区间[start,end),字符串是否是prefix开始
字符串判断 is系列
isalnum() -> bool 是否是字母和数字组成
isspace() 是否只包含空白字符
字符串格式化
*join 拼接只能使用分隔符,且要求被拼接的是可迭代对象
-
拼接字符串还算方便,但是非字符串需要转化为字符串才能拼接
格式要求占位符:使用%和格式符组成,例如%s、%d等 s调用str(),r会调用repr()。所有对象都会被这两个转换
另外还有位置参数、访问元素、关键字参数或命名参数、对象属性访问、对齐( '{0}{1}={2:<2}'.format(3,2,23))、进制、浮点数等
关于bytes 、bytearray
bytes 不可变字节序列
bytearray 字节数组 可变
字符串与bytes
字符串是字符组成的有序序列,字符可以使用编码来理解
bytes是字节组成的有序的不可变序列
batearray是字节组成的有序的可变序列
编码与解码
字符串按照不同的字符集编码encode返回字节序列bytes
字节序列按照不同的字符集解码decode返回字符串
bytes定义
bytes()空bytes
bytes(int)指定字节的bytes,被0填充
bytes(iterable_of_ints) -> bytes[0,255] 的int组成的可迭代对象
bytes(string,encoding[,errors]) ->bytes 等价于string.encode()
bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer从一个字节序列或者buffer复制出一个不可变的bytes对象
使用b前缀定义
只允许使用ASCII使用字符形式b'abc9'
使用16进制表示b"\x41\x61"
bytes 操作
和str类型类似,都是不可变类型,所以很多方法一样。只不过bytes方法,输入是bytes,输出是bytes
类方法bytes.formhex(string)
hex() 返回16进制表示的字符串
索引
baterarry定义
bytearry() 空btearray
bytearray(int)指定字节的bytearray,被0填充
bytearray(iterable_of_ints) -> bytearray[0,255] 的int组成的可迭代对象
bytearray(string,encoding[,errors]) ->bytearray近似string.encode(),不过返回可变对象
bytearray(bytes_or_buffer) -> 从一个字节序列或者buffer复制出一个新的可变的bytearray对象
b前缀定义的是bytes类型
int和bytes
int.from_bytes(bytes,byteorder)将一个字节数组表示成整数
int.to_bytes(length,byteorder)将一个整数表达成一个指定长度的字节数组
关于切片
线性结构
可迭代for...in
len() 获取长度
通过下标可以访问
可以切片
学过的线性结构包括列表、元组、字符串、bytes、bytearray
切片
通过索引区间访问线性结构的一段数据
sequence[start:stop] 表示返回[start,stop]区间的子序列
支持负索引
start为0,可以省略
超过上边界(右边界),就取到末尾;超过下界(左边界),取到开头
start一定要在stop的左端
[:] 表示从头至尾,全部元素被取出,等效于copy()方法
步长切片
step为步长,可以正负整数,默认是1
step要和start:stop同向,否则返回空序列