python数据类型2-字符串、集合

目录

一、字符串string

1、字符串方法

2.字符串排版

3. 字符串判断 is系列

4. 字符串格式化

二、集合

1. 定义

2. 方法

3. 集合运算

4. 集合应用

一、字符串string

  • 双引号或者单引号中的数据,就是字符串。
  • 字符串是不可变对象
  • 字符串支持使用索引访问
  • 有序的字符集合,字符序列
  • 可迭代

定义:

lst = list(sql)

切片

str = 'abc'

str[1:2]

字符串拼接: 

 str1 + str2

1、字符串方法

1. replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次

count表示替换几次,不指定就是全部替换

2. find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。

str.find(str,beg = 0,end = len(str))

rfind(sub[, start[, end]]) -> int

在指定的区间[start, end),从右至左,查找子串sub。找到返回索引,没找到返回-1

index()  和find()方法相似,唯一的区别就是find方法不包含索引值会返回-1,而index()不包含索引值会抛出异常。

3. join()连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。join是重要的字符串方法,用来在队列中添加元素。

注意:需要添加的元素必须都是字符串。

  •    将可迭代对象连接起来,使用string作为分隔符
  •    可迭代对象本身元素都是字符串
  •    返回一个新字符串

示例:

str.join(sequence)

lst = ['1','2','3']

print("\"".join(lst)) # 分隔符是双引号

字符串分割

分割字符串的方法分为2类

split系:将字符串按照分隔符分割成若干字符串,并返回列表

partition系:将字符串按照分隔符分割成2段,返回这2段和分隔符的元组

1. split()    和join方法相反,split方法把字符串分成序列

split(sep=None, maxsplit=-1) -> list of strings

  • 从左至右
  • sep 指定分割字符串,缺省的情况下空白字符串作为分隔符
  • maxsplit 指定分割的次数,-1 表示遍历整个字符串

rsplit(sep=None, maxsplit=-1) -> list of strings

  • 从右向左
  • sep 指定分割字符串,缺省的情况下空白字符串作为分隔符
  • maxsplit 指定分割的次数,-1 表示遍历整个字符串

splitlines([keepends]) -> list of strings

1.    按照行来切分字符串

2.    keepends 指的是是否保留行分隔符

3.    行分隔符包括\n、\r\n、\r等

'ab c\n\nde fg\rkl\r\n'.splitlines()

'ab c\n\nde fg\rkl\r\n'.splitlines(True)

s1 = '''I'm a super student.

You're a super teacher.'''

print(s1)

print(s1.splitlines())

print(s1.splitlines(True))

2. partition(sep) -> (head, sep, tail)

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

2.    sep 分割字符串,必须指定

s1 = "I'm a super student."

s1.partition('s')

s1.partition('stu')

s1.partition('')

s1.partition('abc')

rpartition(sep) -> (head, sep, tail)

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

len() 方法返回对象(字符、列表、元组等)长度或项目个数

count(sub[, start[, end]]) -> int  在指定的区间[start, end),从左至右,统计子串sub出现的次数

lower() 方法转换字符串中所有大写字符为小写。

upper()方法转换字符串中所有小写字符为大写。

swapcase()  交互大小写,原来是大写转换为小写,原来是小写转换为大写

2.字符串排版

1.    title() -> str   标题的每个单词首字母都大写

2.    capitalize() -> str 首个单词大写

3.     center(width[, fillchar]) -> str

    a)    width 打印宽度

    b)    fillchar 填充的字符

4.    zfill(width) -> str

       width 打印宽度,居右,左边用0填充

5.    ljust(width[, fillchar]) -> str 左对齐

6.    rjust(width[, fillchar]) -> str 右对齐

7.    strip([chars]) -> str

   从字符串两端去除指定的字符集chars中的所有字符

   如果chars没有指定,去除两端的空白字符

s = "\r \n \t Hello Python \n \t"
s.strip()
s = " I am very very very sorry "
s.strip('Iy')

lstrip([chars]) -> str

   从左开始

rstrip([chars]) -> str

从右开始

endswith(suffix[, start[, end]]) -> bool

在指定的区间[start, end),字符串是否是suffix结尾

startswith(prefix[, start[, end]]) -> bool

  在指定的区间[start, end),字符串是否是prefix开头

3. 字符串判断 is系列

  • isalnum() -> bool 是否是字母和数字组成 
  • isalpha() 是否是字母 
  • isdecimal() 是否只包含十进制数字 
  • isdigit() 是否全部数字(0~9) 
  • isidentifier() 是不是字母和下划线开头,其他都是字母、数字、下划线 
  • islower() 是否都是小写 
  • isupper() 是否全部大写 
  • isnumeric()方法  如果 string 中只包含数字字符,则返回 True,否则返回 False
  • isspace()方法   如果 string 中只包含空格,则返回 True,否则返回 False.

4. 字符串格式化

format函数格式字符串语法

"{} {xxx}".format(*args, **kwargs) -> str

  • args是位置参数,是一个元组
  • kwargs是关键字参数,是一个字典

花括号表示占位符

  • {}表示按照顺序匹配位置参数,{n}表示取位置参数索引为n的值
  • {xxx}表示在关键字参数中搜索名称一致的
  • {{}} 表示打印花括号

位置参数

  • "{}:{}".format('192.168.1.100',8888),这就是按照位置顺序用位置参数替换前面的格式字符串的占位符中

关键字参数或命名参数

"{server} {1}:{0}".format(8888, '192.168.1.100', server='Web Server ') ,位置参数按照序号匹配, 关键字参数按照名词匹配

访问元素

"{0[0]}.{0[1]}".format(('test','com'))

对象属性访问

from collections import namedtuple 

Point = namedtuple('Point','x y')
p = Point(4,5)
"{{{0.x},{0.y}}}".format(p)

二、集合

1. 定义

可变的、无序的、不重复的元素的集合

初始化:

 set() -> new empty set object
 set(iterable) -> new set object

要求:

  • set的元素要求必须可以hash 
  • 元素不可以索引
  • set可以迭代

2. 方法

增加

add(elem)

  • 增加一个元素到set中, 如果元素存在,什么都不做

update(*others)

  • 合并其他元素到set集合中来
  • 参数others必须是可迭代对象
  • 就地修改

 删除

remove(elem)

  •  从set中移除一个元素
  • 元素不存在,抛出KeyError异常

discard(elem)

  • 从set中移除一个元素
  • 元素不存在,什么都不做

pop() -> item

  • 移除并返回任意的元素。
  • 空集返回KeyError异常

clear()

  • 移除所有元素

修改、查询

  • 修改:无修改方法,要么删除,要么加入新的元素 
  • 查询 :非线性结构,无法索引
  • 遍历 :可以迭代所有元素

3. 集合运算

集合基本概念:

  • 全集 :所有元素的集合。例如实数集,所有实数组成的集合就是全集
  • 子集subset和超集superset :一个集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集 
  • 真子集和真超集:A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集
  • 并集:多个集合合并的结果
  • 交集:多个集合的公共部分
  • 差集:集合中除去和其他集合公共部分

集合运算:

并集

将两个集合A和B的所有的元素合并到一起,组成的集合称作集合A与集合B的并集

union(*others)  返回和多个集合合并后的新的集合

| 运算符重载  等同union

update(*others)   和多个集合合并,就地修改

 |=  等同update

交集

集合A和B,由所有属于A且属于B的元素组成的集合

intersection(*others)   返回和多个集合的交集

&  等同intersection

intersection_update(*others)  获取和多个集合的交集,并就地修改

&=  等同intersection_update

差集

集合A和B,由所有属于A且不属于B的元素组成的集合

difference(*others)  返回和多个集合的差集  

-  等同difference

difference_update(*others)   获取和多个集合的差集并就地修改

-=  等同difference_update

对称差集

集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B)∪(B-A)  symmetric_differece(other)  返回和另一个集合的差集

^ 等同symmetric_differece

symmetric_differece_update(other)  获取和另一个集合的差集并就地修改

^=  等同symmetric_differece_update

判断集合关系

issubset(other)、<=   判断当前集合是否是other的超集

set1 > set2  判断set1是否是set的真超集

isdisjoint(other)  当前集合和另一个集合没有交集,若没有交集,返回True

4. 集合应用

共同好友

你的好友A、B、C,他的好友C、B、D,求共同好友

微信群提醒

XXX与群里其他人都不是微信朋友关系

权限判断

  • 有一个API,要求权限同时具备A、B、C才能访问,用户权限是B、C、D,判断用户是否能够访 问该API
  • 有一个API,要求权限具备A、B、C任意一项就可访问,用户权限是B、C、D,判断用户是否能 够访问该API

你可能感兴趣的:(Python,python)