第一天注册,记录每天学到的小知识

2019-05-22  本文已影响0人  D_w

计划把每天学到的小知识记录下来,就这样吧

matlab:

如何加载.mat文件转换为矩阵形式

S1 = load('IntBP1.mat');

BP1 = struct2cell(S1);

Mymat1 = cell2mat(BP1);

save Mymat1.mat Mymat1 -MAT
Mymat1就是矩阵形式了(S1是Struct Array 形式)。

      cell:创建空的元胞数组

      cellfun:为元胞数组的每个元胞执行指定的函数

      celldisp:显示所有元胞的内容

      cellplot:利用图形方式显示元胞数组

      cell2mat:将元胞数组转变成为普通的矩阵

      mat2cell:将数值矩阵转变成为元胞数组

      num2cell:将数值数组转变成为元胞数组

      deal:将输入参数赋值给输出

      cell2struct:将元胞数组转变成为结构

      struct2cell:将结构转变为元胞数组

      iscell:判断输入是否为元胞数组

爬虫:

如果爬取的是动态信息,比如需要加载,翻页等的信息,在Network中找对应的进行爬取,利用requests,bs4,json等库;如果爬取的是静态信息,如小说图片,则在Element中爬取,利用requests,bs4等库。

动态信息用requests.get爬到后得用json()方法将response对象变为列表/字典对象,再用取字典中的值的方法取出想要的信息。

requests库用来取得网址内容,返回response对象,可以用text方法提取到文字内容,也可以用content提取到二进制文件,如图片,音乐。

r.status_code #响应状态码

r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read() 读取

r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩

r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码

r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None

特殊方法#

r.json() #Requests中内置的JSON解码器

r.raise_for_status() #失败请求(非200响应)抛出异常

    bs4.BeautifulSoup可以用来解析requests.get得到的网址,虽然和.text方法print出的内容看似一样,但他们的类不同,分别为<class 'str'> 与<class 'bs4.BeautifulSoup'>
import requests
from bs4 import BeautifulSoup
#引入BS库
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html') 
html = res.text
soup = BeautifulSoup(html,'html.parser') #把网页解析为BeautifulSoup对象,BeautifulSoup中的第0个元素必须是字符串类型,第1个元素是解析器

一个常用的headers


headers={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}

res=requests.get(url,headers=headers)

exec的用法
例子

x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
    y = 20
    exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})

func()
-----------------输出为----------------
34

上面这一串相当于

x = 1
y = 2

def func():
    y = 3
    z = 4
    
    z = 30
    sum = x + y + z
    print(sum)

func()

设计模式可以参考 https://blog.csdn.net/zhang1281480917/article/details/89530723

python的Template用法
  1. 字符串替换
template = "hello %s , your website  is %s " % ("大CC","http://blog.me115.com")
print(template)
#等价于
template = "hello {0} , your website  is {1} ".format("大CC","http://blog.me115.com")
print(template)
  1. 模板方式替换
from string import Template
tempTemplate = Template("Hello $name ,your website is $message") # 这种方式替换变量的标志为$
print(tempTemplate.substitute(name='大CC',message='http://blog.me115.com'))
# 使用字典方式替换
from string import Template
tempTemplate = Template("Hello $name ,your website is $message") # 这种方式替换变量的标志为$
a = {name:'大CC',message:'http://blog.me115.com'}
print(tempTemplate.substitute(a))

如果想换个替换方式的标志,比如从$换为!,可以这样

from string import Template
class MyTemplate(Template):
    delimiter = "!"
tempTemplate = MyTemplate("Hello !name ,your website is !message") # 这种方式替换变量的标志为!
a = {name:'大CC',message:'http://blog.me115.com'}
print(tempTemplate.substitute(a))
jsonpath的使用
  1. jsonpath取值不需要查看json数据,直接通过..(..就表示全局检索后面跟的属性)
data2 = jsonpath.jsonpath(json_data, "$..uname")      # 全局搜索uname属性,如果没有返回FALSE
print(data2)
  1. jsonpath是以列表的形式返回匹配到的值
reprstr区别
class Name:
    def __init__(self,name):
        self.name = name
    def __repr__(self):
        return 'Name: %s' % self.name

student = Name('jack')
student
print(student)
------------输出--------------
Name: jack
Name: jack
class Name:
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return 'Name: %s' % self.name

student = Name('jack')
student
print(student)
-------------------输出-------------------
<__main__.Name object at 0x0000020910CF0B20>
Name: jack
上一篇下一篇

猜你喜欢

热点阅读