全网最详细的Python基础知识(6)看了就是赚了

字符串详细讲解

字符串的替换

  1. replace()—替换字符,将某一串字符串中的某一个字符替换成另一个字符
    情况一:
a = 'abc'
print(a.replace('a','H'))
print(a)

>>>Hbc
   abc

意思是将abc中的a字符替换成H字符,但是替换前的a变量的字符串是不会改变的,可以理解成临时替换

情况二:

a = 'abcbb'
print(a.replace('b','H',2))
print(a)

>>>aHcHb
   abcbb   

当替换一个字符串中出现重复的字符,可以增加一个参数,这个参数用来规定替换几次,例如上述代码中的2,意思是将原来字符串中的两个b替换成H,如果是3,就是将三个b替换成H

对于字母单词的操作

  1. title()将字符串中首字母大写,以标题的形式
a = 'hello python'
print(a.title())
print(a)

>>>Hello Python
   hello python

每个单词的开头字母都会转成大写

  1. upper()全部字符转为大写
a = 'abc'
print(a.upper())
print(a)

>>>ABC
   abc
  1. lower()全部字符转为小写
a = 'ABC'
print(a.lower())
print(a)

>>>abc
   ABC
  1. capitalize()将第一个单词的首字母转为大写
a = 'hello python'
print(a.capitalize())
print(a)

>>>Hello python
   hello python

注意:1、以上方法都只适用于字符串且单词或字母形式;2、title和capitalize重点注意,一个是将所有单词首字母大写,一个是只大写第一个单词首字母

对于多余空格操作

概念:在后面我们学习了爬虫后,会经常使用到;当我们爬取一些信息,以字符串的形式存储时,往往会多出一些无法手动删除的空格,这时候就需要我们使用这些方法来去除

  1. strip()去除字符串两边的空格
  2. lstrip()去除字符串左边的空格
  3. rstrip()去除字符串右边的空格
    l代表left,r代表right;python中经常使用这种方法命名
a = '  python  '
b = '  java'
c = 'php  '
print(a.strip())
print(b.lstrip())
print(c.rstrip())

>>>python
   java
   php

提示:如果只是右边或左边有空格,可以直接使用strip也是可以的,并且不会报错,因为strip是去除右边和左边的空格

字符串的切割与查找

  1. split()将字符串以什么格式切割,需要填写参数,参数代表切割的格式
a = 'hello python'
print(a.split(' '))

>>>['hello', 'python']

上述是以空格的格式切割,返回的就是hello和python,并且以列表的形式返回,如果是将参数变成p:

a = 'hello python'
print(a.split('p'))

>>>['hello ', 'ython']

那么返回的就是右边有空格的hello以及ython;参数后面可以再加一个参数,用来控制切割次数,默认是切割一次

a = 'abcbdbe'
print(a.split('b',3))

>>>['a', 'c', 'd', 'e']
  1. find()当字符串很长且很多时,会使用find去查找你所需要的字符
a = 'hello python'
print(a.find('h'))

>>>0

意思是查找h字符所对应的索引下标,这里空格也是算一个字符,如果查找的是p,返回的就是6;但如果查找的字符不存在,返回的就是-1

字符串的判断

  1. isalpha()判断是否为全英文的字符串
  2. isdigit()判断是否为全数字
  3. istitle()判断时否为首字母大写的
  4. islower()判断时否为全部小写的
  5. isupper()判断是否为全部大写的
    以上一般与if…else一起使用,下面代码展示其中一个,剩下的都是一样的使用
a = 'Hello python'
if a.istitle():
    print(True)
else:
    print(False)

>>>False

字符串的制表符、换行符以及去除转义符

  1. \t水平制表符,俗称空格;默认8个空格为一组;所以使用后会让每一行对齐
print('hello\tpython')

>>>hello	python
  1. \n换行符,强制换行
print('hello\npython')

>>>hello
   python
  1. r去除转义,当我们需要打印\t、\n这种本身在python中又意义的字符时,在最前面加上r可以去除它们本身的意义,让其变成没有意义的符号,但去除转义不会真正删除它原本的意思
print(r'\t,\n')

>>>\t,\n

编码格式

最早出现的是Unicode的编码格式,这种格式希望让所有语言都是用,但是英国不想使用,于是出现了utf-8以及utf-16格式(在使用时utf的大写或小写没有关系);最后为了国际统一,出现了ASCII编码格式,这种称为国际通用编码格式,但中国的编码格式是gbk(要么全大写,要么全小写,禁止出现有大写有小写)Unicode编码格式是存在于python内核中的

  1. 编码:encode()
a = '拾柒'
b = a.encode(encoding='utf-8')
print(b)

>>>b'\xe6\x8b\xbe\xe6\x9f\x92'  #b代表的是bytes数据类型,是编码后独有的
  1. 解码:decode()
a = b'\xe6\x8b\xbe\xe6\x9f\x92'
print(a.decode('utf-8'))

>>>拾柒

字典

概念

结构:由键和值组成,简称为键值对,且键值对封装在大括号中{‘keys’:‘values’}
可以使用dict关键字来定义字典

a = dict(b=1,c=2)
print(a)

>>>{'b':1,'c':2}

方法

  1. get()获取字典中的值
a = {'num':123}
print(a.get('num'))

>>>123

如果get获取的值不存在,则会返回None,并不会报错,表示什么都没有

  1. setdefault()查询,有两个参数,第一个是键,第二个是值;如果键值对存在,则查询它的值;如果不存在,则添加这个键值对
a = {'num':123}
print(a.setdefault('str',111))
print(a)

>>>111
   {'num': 123, 'str': 111}
  1. keys()查询所有键
  2. values()查询所有值
a = {'num': 123, 'str': 111}
print(a.keys())
print(a.values())

>>>dict_keys(['num', 'str'])
   dict_values([123, 111])

将所有键和值分别查询出来,dict代表字典,keys代表键,dict_keys就代表键;都是以列表的形式返回

  1. update()修改值,如果修改的值不存在,则添加这个键值对
a = {'num': 123, 'str': 111}
a.update({'name':'shiqi','str':222})
print(a)

>>>{'num': 123, 'str': 222, 'name': 'shiqi'}

注意,修改时也要加大括号

  1. pop()删除指定的键值对
a = {'num': 123, 'str': 111}
a.pop('num')
print(a)

>>>{'str': 111}

删除num键以及值,一次只能删除一条

  1. popitem()随机删除一个键值对,实际上是根据添加的先后顺序删除最后添加的那一个
a = {'num': 123, 'str':111,'name':'shiqi'}
a.popitem()
print(a)

>>>{'num': 123, 'str': 111}

集合

定义

集合也是以大括号的形式,当字典中只有键却没有值时,就变成了集合;集合的值时唯一且无序的,如果出现重复的值,集合会自动去重;集合不能为空,一旦为空了,就成了字典,只有字典可以为空字典,集合必须要有数据

集合的交并差

  1. 交集:set1&set2
  2. 并集:set1|set2
  3. 差集:set1-set2(所得结果以前面的为主)
set1 = {1,2,3,4,5}
set2 = {5,1,3,8,9}

set3 = {1,2,3,4}
set4 = {5,6,7,8}

set5 = {1,2,3,4,5}
set6 = {5,1,3,8,9}

print(set1&set2)
print(set3|set4)
print(set5-set6)


>>>{1, 3, 5}
   {1, 2, 3, 4, 5, 6, 7, 8}
   {2, 4}

主要解释一下最后的差集,交集和并集比较简单,就不做过多讲解;来看差集,set5和set6相同的部分是1,3,5;当它们相减后,重复的部分没有了,set5剩下的是2,4;set6剩下的是8,9;所谓结果以前面的为主就是说,相减后剩下的,哪个集合在前,就打印哪一个的结果;这里很明显set5在set6前,所以打印的是2,4;如果说set6在set5前,则打印的是8,9

集合的增和删

  1. 添加单个:add()
  2. 添加多个:update()
  3. 删除最前面的:pop()
  4. 根据值删除:remove()
set1 = {1,2,3,4}
set1.add(5)
set1.update({6,7,8})
print(set1)

set1.pop()
set1.remove(2)
print(set1)

>>>{1, 2, 3, 4, 5, 6, 7, 8}
   {3, 4, 5, 6, 7, 8}

运算符总结

身份运算符

  1. is
  2. is not

成员运算符

  1. in:判断前面的元素是否属于后面的数据之中
  2. not in:去反
a = ['a','b','c']
b = 'b'
if b in a :
    print(True)
else:
    print(False)

>>>True
a = ['a','b','c']
b = 'b'
if b not in a :
    print(True)
else:
    print(False)

>>>False

上节课作业答案

#第一题(和while循环原理一样,同学们先自己理解一下,实在不行,私信或者评论区)
for x in range(1,10):
    for y in range(1,x+1):
        print('%d*%d=%d'%(y,x,x*y),end='\t')
    print('\n')

#第二题
#while循环的方法
li = [1,1,1,2,2,3,2,3,4,2,3,5,4,5,4]
i = 0
while i < len(li):  #len()是查看列表的长度,同学们记一下,以后会经常用到
    if li.count(li[i])>1:  #如果统计出某个元素的个数大于1则删除li[i]下标所对应的值,例如li[0]所对应的是数字1,而count(1)有三个大于1,则删除;此时列表长度减一,现在li[0]还是1,继续删除,当只有一个1时,if条件不满足,执行else代码对i加一,此时li[i]2,因为两个1删除了,所以下标0对应的是数字1,下标1对应的是数字2;剩下的以此类推
        li.remove(li[i])
    else:
        i += 1
li.sort()
print(li)

#for循环的方法
li = [1,1,1,2,2,3,2,3,4,2,3,5,4,5,4]
for number in li.copy():  #对列表进行复制,这里只能用copy,不能用=;将复制的列表遍历,并储存在变量number中
    if li.count(number)>1: #跟上面方法类似,第一个数字是1,总共三个1,大于1;将li列表中删除复制出来的第一个数1
        li.remove(number)
li.sort()
print(li)

第一种方法比较好理解,第二种相对复杂一点,建议大家打印一下遍历后的number来看

今日作业

  1. 定义两个有重复元素的列表,打印出重复元素
  2. 统计一串字符中a-z出现的个数,忽略大小写
  3. 利用26个字母和9个数字,随机生成10个8位密码;提示:random.choices(‘a-z0-9’,k=8)第一个参数是范围,第二个参数是生成几位数
  4. 判断用户输入的是不是手机号(11位数字)

今天的内容就到这里,感谢大家的支持;从下周开始,我要去上学了,只能一周一更了,请大家见谅

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值