首页 > 其他分享 >py常用语法

py常用语法

时间:2024-03-29 21:36:00浏览次数:16  
标签:常用 name age py dic 语法 lst print import

Spider常用知识

一.py常用语法

1.基础知识

1.1.if条件判断

情况一, 数据里有一些我们并不需要的内容

if data里有你不需要的数据:
	再见
else:
 	保留

情况二, 页面结构不统一, 会有两种页面结构

# 伪代码, 理解含义(思路)
提取器1 = xxxx  #  用来提取页面中内容的
提取器2 = xxxxxx
# 页面有可能是不规则的。 张飞, 潘长江 
结果1 = 提取器1.提取(页面)
if 结果1:
    有结果. 存起来
else:
    没有结果. 
    结果2 = 提取器2.提取(页面)

1.2.关于True和False

# 几乎所有能表示为空的东西. 都可以认为是False
print(bool(0))
print(bool(""))
print(bool([]))
print(bool({}))
print(bool(set()))
print(bool(tuple()))
print(bool(None))
# 上面这一坨全是False, 相反的. 都是真. 利用这个特性. 我们可以有以下的一些写法
# 伪代码, 理解逻辑. 
结果 = 提取器.提取(页面)
if 结果:
    有结果. 我要保存结果
else:
    没结果. ......

2.字符串

2.1.索引和切片

索引, 就是第几个字符. 它从0开始.
切片, 从字符串中提取n个字符.

print(s[1])
print(s[0])
print(s[2:4])  从第2个, 到第4个(取不到4)

2.2.strip()

strip()可以去掉字符串左右两端的空白(空格, 换行\n, 回车\r, 制表符\t)

s = "    \t\t\t我的天哪\r\r      \n\n  "  # 够乱的字符串
s1 = s.strip()
print(s1)  # 好了 `我的天哪`

2.3.split()

split, 做切割的.

s = "10,男人本色,100000万"  # 你在网页上提取到这样的一段数据. 现在我需要电影名称
tmps = s.split(",")
name = tmps[1]
print(name)  # 男人本色
id, name, money = s.split(",")  # 切割后. 把三个结果直接怼给三个变量
print(id)
print(name)
print(money)

2.4.replace()

replace, 字符串替换

s = "我      \t\t\n\n爱   黎       明    "   # 这是你从网页上拿到的东西
s1 = replace(" ", "").replace("\t", "").replace("\n", "")  # 干掉空格, \t, \n
print(s1)  # 我爱黎明

2.5.join()

join, 将列表拼接为一个完整的字符串

lst = ["我妈", "不喜欢", "黎明"]  # 有时,由于网页结构的不规则, 导致获取的数据是这样的. 
s1 = "".join(lst)  # 用空字符串把lst中的每一项拼接起来
print(s1)  # 我妈不喜欢黎明

lst2 = ["\n\r","\n\r","周杰伦\n\r", "\n不认识我\r"] 
s2 = "".join(lst2).replace("\n", "").replace("\r", "")
print(s2)  # 周杰伦不认识我

3.列表

3.1.索引, 切片

列表的索引和切片逻辑与字符串完全一致

lst = ["赵本山", "王大陆", "大嘴猴", "马后炮"]
item1 = lst[2]  # 大嘴猴
item2 = lst[1]  # 王大陆

lst2 = lst[2:]
# 注意, 如果列表中没有数据. 取0会报错
lst = []
print(lst[0])  # 报错, Index out of bounds

# 注意, 如果给出的索引下标超过了列表的最大索引. 依然会报错
lst = ["123", "456"]
print(lst[9999])  # 报错, Index out of bounds

3.2.增加

给列表添加数据.

lst = [11,22]
lst.append(33)
lst.append(44)
print(lst)  # [11,22,33,44]

3.3.删除

lst.remove("周润发")  #  把周润发删掉

3.4.range

for i in range(10):
    print(i)   # 从0数到9
   
for i in range(5, 10):
    print(i)  # 从5 数到 9

3.5.查询(必会!!!!)

lst = ["赵本山", "周杰伦", "大嘴猴", "马后炮"]
print(lst[0])
print(lst[1])
print(lst[2])
print(lst[3])

# 循环列表的索引
for i in range(len(lst)):
    print(lst[i])
# 循环列表的内容
for item in lst:
    print(item)

4.字典

4.1.增加

dic = {}
dic['name'] = '樵夫'
dic['age'] = 18
print(dic)  # {"name": "樵夫", "age": 18}

4.2.修改

dic = {"name": "樵夫", "age": 18}
dic['age'] = 19
print(dic)  # {"name": "樵夫", "age": 19}

4.3.循环

dic = {"name": "樵夫", "age": 18}
for k in dic:  # 循环出所有的key
    print(k)  
    print(dic[k])  # 获取到所有的value并打印

4.4.嵌套

dic = {
    "name": "王峰",
    "age": 18,
    "wife": {
        "name": "章子怡",
        "age": 19,
    },
    "children": [
        {'name':"胡一菲", "age": 19},
        {'name':"胡二菲", "age": 18},
        {'name':"胡三菲", "age": 17},
    ]
}

# 王峰的第二个孩子的名字
print(dic['children'][1]['name'])
# 王峰所有孩子的名称和年龄
for item in dic['children']:
    print(item['name'])
    print(item['age'])

5.字符集和bytes

字符集, 记住两个字符集就够了. 一个是utf-8, 一个是gbk

# 把字符串转化成字节
bs = "我的天哪abcdef".encode("utf-8")
print(bs)  #  b'\xe6\x88\x91\xe7\x9a\x84\xe5\xa4\xa9\xe5\x93\xaaabcdef'
# 一个中文在utf-8里是3个字节. 一个英文是一个字节. 所以英文字母是正常显示的

# 把字节还原回字符串
bs = b'\xe6\x88\x91\xe7\x9a\x84\xe5\xa4\xa9\xe5\x93\xaaabcdef'
s = bs.decode("utf-8")
print(s)

6.文件操作

python中. 想要处理一个文件. 必须用open()先打开一个文件

f = open(文件名, mode="模式", encoding='文件编码')
f.read()|f.write()
f.close()

模式:
我们需要知道的主要有4个. 分别是: r, w, a, b

  1. r 只读模式. 含义是, 当前这一次open的目的是读取数据. 所以, 只能读. 不能写
  2. w 只写模式. 含义是, 当前这一次open的目的是写入数据. 所以, 只能写, 不能读
  3. a 追加模式. 含义是, 当前这一次open的目的是向后追加. 所以, 只能写, 不能读
  4. b 字节模式. 可以和上面三种模式进行混合搭配. 目的是. 写入的内容或读取的内容是字节.

encoding: 文件编码. 只有处理的文件是文本的时候才能使用. 并且mode不可以是b. 99%的时候我们用的是utf-8

另一种写法:

with open(文件名, mode=模式, encoding=编码) as f:
    pass

这种写法的好处是, 不需要我们手动去关闭f

读取一个文本文件:

with open("躺尸一摆手.txt", mode="r", encoding="utf-8") as f:
    for line in f:  # for循环可以逐行的进行循环文件中的内容
        print(line)

7.关于模块

在python中有三种模块.

第一种, python内置模块

​ 不用安装. 直接导入就能用

第二种, 第三方模块

​ 需要安装. 安装后. 导入就可以用了

第三种, 自定义模块(新手先别自己定义模块)

​ 直接导入就能用

导入模块的语法

import 模块
from 模块 import 功能
from 模块.子模块 import 功能

举例子, 
import os
import sys
from urllib.parse import urljoin
from bs4 import BeautifulSoup

搞爬虫.必须要了解的一些python内置模块

  1. time模块

    import time
    time.time()  # 这个是获取到时间戳
    time.sleep(999)  # 让程序暂停999秒
    
  2. os模块

    import os
    # 判断文件是否存在
    os.path.exists()  #  判断文件或者文件夹是否存在
    os.path.join()    # 路径拼接
    os.makedirs()     # 创建文件夹
    
    
  3. json模块(重中之重)

    现在的网站不同于从前了. 习惯性用json来传递数据. 所以, 我们必须要知道json是啥, 以及python如何处理json.

    json是一种类似字典一样的东西. 对于python而言, json是字符串.

    例如,

    s = '{"name": "jay", "age": 18}'
    

    你看. 这破玩意就是json

    如何来转化它.

    json字符串 => python字典

    import json
    s = '{"name": "jay", "age": 18}'
    dic = json.loads(s)
    print(type(dic))
    

    python字典 => json字符串

    import json
    dic = {"name": "jay", "age": 18}
    s = json.dumps(dic)
    print(type(s))
    
  4. random模块

    随机. 没别的用处.生成随机数

    import random
    i = random.randint(1, 10)  # 1~10的随机数
    print(i)   # 多跑两次.效果更加
    
  5. 异常处理

    我们要清楚一个事情. 我们平时在打开一个网址的时候. 如果长时间没有反应, 或者加载很慢的时候. 我们习惯性的会刷新网页. 对吧. 这个逻辑就像: 程序如果本次请求失败了. 能不能重新来一次. OK, 我们接下来聊的这个异常处理. 就是干这个事儿的.

    try: # 尝试...
        print("假如, 我是一段爬虫代码, 请求到对方服务器")
        print("我得出事儿啊")
        print(1/0)  # 出事儿了
    except Exception as e:  # 出错了. 我给你兜着
        print(e)  # 怎么兜?  打印一下. 就过去了
        
    print("不论上面是否出错. 我这里, 依然可以执行")
    

    看懂了么? 程序执行的时候. 如果try中的代码出现错误. 则自动跳到except中. 并执行except中的代码. 然后程序正常的, 继续执行

    有了这玩意. 我们就可以写出一段很漂亮的代码逻辑:

    while 1:
        try:
            我要发送请求了. 我要干美国CIA的总部. 我要上天
            print("我成功了!!")
            break  # 成功了.就跳出循环
        except Exception as e:
            print("失败了")
            print("我不怕失败")
            print("再来")
           
    

    改良版:

    import time
    for i in range(10):
        try:
            我要发送请求了. 我要干美国CIA的总部. 我要上天
            print("我成功了!!")
            break  # 成功了.就跳出循环
        except Exception as e:
            print("失败了")
            print("我不怕失败")
            print("再来")
            time.sleep(i * 10)
           
    

标签:常用,name,age,py,dic,语法,lst,print,import
From: https://www.cnblogs.com/ckeri/p/18104655

相关文章

  • 一文搞懂Python的数据结构-列表
    大道至简:任何技术都来源于生活,每一个技术点都是为了解决生活场景中的某个问题1/Python列表基础1.1什么是列表?从生活场景说起,购物清单=列表当我们去购物时,我们通常会准备一个购物清单,其中列出了我们需要购买的物品。这个购物清单就是一个列表的实际应用。你可......
  • 华为OD机试 - 传递悄悄话(Java & JS & Python & C & C++)
    须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输入描述输出描述解题思路:题目描述给定一个二叉树,每个节点上站一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。初始时,根节点所在......
  • 华为OD机试 - 剩余银饰的重量(Java & JS & Python & C & C++)
    须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输入描述输出描述解题思路:题目描述有N块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。每一回合,从中选......
  • hadoop-3.1.1分布式搭建与常用命令
    一、准备工作1.首先需要三台虚拟机:master、node1、node22.时间同步ntpdatentp.aliyun.com3.调整时区cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime 4.jdk1.8java-version5.修改主机名三台分别执行vim/etc/hostn......
  • PTA-树的遍历(python实现)
    自己做题过程中的一些想法,做一个记录,方便以后查看,如果能给读者一些启发也是极好的。欢迎大家的批评指正和交流讨论。题目描述:给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    追加导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时文件l......
  • python 脚本对数据库的简单操作
    importsqlite3fromdatetimeimportdatetime'''数据库内容[ID]intnull,[loginName]text(50),[loginTime]text(50),[logOutTime]text(50),[operation]intnull'''#连接到数据库conn=sqlite3.connect('test.......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    增量导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时......
  • Python Numpy第三方库的基本使用
    1.下载Numpy第三方库pipinstallnumpy2.导入第三方库importnumpyasnp3.一些基本操作importnumpyasnpnum1=np.array([1,2,3,4,5])#创建数组print(num1)num2=np.zeros((3,2))#创建全零数组print(num2)print(num2.shape)#打印数组尺寸num3=np.ones((2,4))#创建......
  • 文件-Python
    师从黑马程序员文件编码 不同编码,将内容翻译成二进制也是不同的查看文件编码文件的读取文件的概念文件操作内容主要包括打开,关闭,读,写文件的操作步骤open()打开函数mode常用的三种基础访问模式读操作相关方法读操作相关方法close()关闭文件对象wi......