Python笔记第四节:字符串及其操作

字符串

  1. 一个个字符组成的有序序列
  2. 字符的集合 使用单引号,双引号,三引号引住的字符序列
  3. 字符串是不可变对象
  4. Python3起 字符串就是Unicode类型

字符串定义 初始化

s1 = 'string'
s2 = "string"
s3 = """ this is a "String" """
s4 = 'hello \n magedu.com'        #\n代表换行
s5 = r 'hello \n magedu.com'		#\r 表示转义   让\n就表示为字符串

字符串元素访问–下标(索引)

字符串支持使用索引 因为是有序序列

sql = “dasfsd  dsda fafsf”
sql[4]     #字符串 's'

字符串还可以迭代

sql = list(sql)

join连接 (拉链)

Python笔记第四节:字符串及其操作_第1张图片

字符串分割

1.分割字符串方法有两种
split系:将字符串按照分隔符分割成若干字符串,并返回新列表,只会往前切 不会往后 索引超界不报错

  ls = 'a    b    dd    d   '
    split()		    # 默认按照尽量长的空格进行分割		返回['a' ,'b', 'dd', 'd']
    split( ' ')		# 按照一个空白切除  不保留切割符	
  • partition系:将字符串按照字符串分割成2段,返回2段和分割符的元组

从右到左,遇到分隔符就把字符串分割成两部分,返回头,分隔符,尾三部分的三元组如果没有找到分割符,就返回头,2个空元素的三元组

Python笔记第四节:字符串及其操作_第2张图片

字符串大小写

upper()  	# 全大写
lower()	# 全小写
swapcase()	#交换大小写

Python笔记第四节:字符串及其操作_第3张图片

字符串修改*

  • replace(old, new,[,count]) -->str

    字符串中找到匹配替换为新的子串,返回新字符串
    count表示替换几次,不指定就是全部替换
    ‘heLLLo world ’.replace('l', 'p')			# 把L替换为p	全部换掉
     ‘heLLLLo world ’.replace('l', 'p', 2)		#	把L替换为p  替换两个
    
  • strip([chars])–> str
    从字符串两端去除指定的字符集chars中的所有字符
    如果chars没有指定,去除两端的空白字符

    s = "  Hello Python  \n \t"
    s.strip()		#不指定 返回”Hello Python“  去掉了两头的空格
    s.strip(' ' ) 	#指定了去掉空格‘\r \n \t Hello Python  \n \t‘  (\n \t不算空格)
    s.strip('   Hell ' )	#返回”o Python  \n \t“	去掉了指定字符

字符串查找

  • 时间复杂度
    index和count方法都是O(n)
    随着列表数据规模的增大,而效率下降
  • len(string)
    返回字符串的长度,即字符的个数
  • index(sub[,start[,end]])–>int
    在指定的区间[start,end],从左到右。查找子串sub,找到就返回索引,没找到返回ValueError
    法跟find一样
  • find(sub[,start[,end]])–>int
    在指定的区间[start,end],从左到右。查找子串sub,找到就返回索引,没找到返回-1
  • rfind(sub[,start[,end]])–>int
    在指定的区间[start,end],从右到左。查找子串sub,找到就返回索引,没找到返回-1
    s = 'I am very very very  sorry'
    s.find('very')			#返回【2】  very的索引
    s. find('very',5)		#返回【5】 从索引5开始找
    	#只能正这找  反着找要指定负索引

字符串判断*

  • 时间复杂度是O(1) 可以常用

Python笔记第四节:字符串及其操作_第4张图片

字符串判断is系列

Python笔记第四节:字符串及其操作_第5张图片

字符串格式化

  • 字符串的格式化是一种拼接字符串输出样式的手段,更灵活方便
  • join拼接只能使用字符串分隔符,且要求拼接的是可迭代对象且某元素是字符串
  • +号拼接字符串还算方便,但是非字符串需要先转换为字符串才能拼接
  • 在2.5版本之前,只能使用printf style风格的print输出
  • printf-style formatting,来自于C语言的print函数
  • 格式要求
  • 占位符:使用%和格式字符组成,例如%s %d等
    s调用str(),r会调用repr()/所有对象都可以被这两个转换
  • 占位符中还可以插入修饰符,列如%3d表示打印3个位置,不够前面补零
  • format % values,格式字符串和被格式的值之间使用%分割
  • values只能是一个对象,或是一个与格式字符串占位符数目相等的元组,或一个字典
    Python笔记第四节:字符串及其操作_第6张图片
    Python笔记第四节:字符串及其操作_第7张图片
    Python笔记第四节:字符串及其操作_第8张图片
    Python笔记第四节:字符串及其操作_第9张图片
    Python笔记第四节:字符串及其操作_第10张图片

切片

  • 通过索引区间访问线性结构的一段数据
  • sequence[start:stop] 表示返回(sart,stop)区间的子序列
  • 支持负索引
  • start为0,可以省略
  • stop为末尾。可以省略
  • 超过上界,就去到末尾;超过下界,就去到开头
  • start 一定要在stop左边
  • [ : ]表示从头到尾,全部元素被取出,等效copy()方法
    Python笔记第四节:字符串及其操作_第11张图片

步长切片

  • 【start:stop:stpe】
  • step为步长 可以正,负整数,默认是1
  • step要和start:stop同向否则返回空序列
    Python笔记第四节:字符串及其操作_第12张图片

切片赋值

  • 切片操作写在等号左边
  • 被插入值是可迭代对象写在右边
     a = list(range(5))
     a[1:2] = 10  # 这是错误的  右边必须为可迭代对象
	a [1:2] = {10,11}	#  将索引为1到2 的替换成10  11

bytes ,bytearray

  1. 所有数据都是用2进制存储在计算机中

Python笔记第四节:字符串及其操作_第13张图片

python3引入两个新类型
bytes:不可变的字节序列

  • 字符串与bytes
  • 字符串是字符组成的有序序列,字符可以使用编码来理解
  • bytes是字节组成的有序的不可变的序列
  • bytearray是字节组成的有序的可变序列

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"
  • 所有操作:b"abcdef"[2] 返回该字节对应的数,int类型
    Python笔记第四节:字符串及其操作_第14张图片

bytearray定义

  • bytearray()空的bytearray
  • 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。
  • bytearray前缀就是bytearray()
    Python笔记第四节:字符串及其操作_第15张图片

int 和bytes

  • int.from_bytes(bytes,byteorder)

  • 将一个字节数组表示成整数

  • int.to_bytes(length,byteorder)

  • byteorder字节序:将一个整数表达成一个指定长度的字节数组

i = int.from_bytes(b'abc',,"big")  #大头
print(i,hex(i))    返回#  6382179  0x61663
 print(i.to_bytes(3,'big'))     # 返回b"adc"

  • 编码与解码
  • 字符串按照不同的字符集编码encode返回字节序列bytes
  • encode(encodin = utf-8,errors = ‘stric’)–bytes
  • 字节序列按照不同的字符集解码decode返回字符串
  • bytes。decode(encoding = ‘utf-8’,errors= ‘strict’)–str
  • bytes(string,encoding[,errors])->bytes 等价于string。encode(),不过返回的是可变对象

bytearray 字节数组 可变

你可能感兴趣的:(复习,笔记)