python 常用库

10.颜色显示模块

  • linux
image.png
  • windows
# https://www.jianshu.com/p/e1bd64c2df4e
# 其格式为:\033[显示方式;前景色;后景色m
import console
print("\033[5;32m hello")
print("\033[1;31;40m你好!\033[0m friends ")
image.png

碱基彩色显示

import random
import console

string="".join(random.choices("AGCT",k=10))

class bcolors:
    HEADER = '\x1b[6;30;42m'
    ENDC = '\x1b[0m'
print('\x1b[6;30;42m' + 'start!\n' + '\x1b[0m')

#string="AGCTCT"


for i in string:
    if i=="A":
        print('\x1b[6;30;42m' + 'A' + '\x1b[0m',end="")
    elif i=="G":
        print('\x1b[6;30;43m' + 'G' + '\x1b[0m',end="")
    elif i=="C":
        print('\x1b[6;30;46m' + 'C' + '\x1b[0m',end="")
    elif i=="T":
        print('\x1b[6;30;45m' + 'T' + '\x1b[0m',end="")

image.png

9.BeatifulSoup

bs4 中find和select 匹配差异:
find属于模糊匹配,select 精确匹配(ccs 标签)

BeatifulSoup 将 HTML 抽象成为 4 类主要的数据类型,分别是Tag , NavigableString , BeautifulSoupComment 。每个标签节点就是一个Tag对象,NavigableString 对象一般是包裹在Tag对象中的字符串,BeautifulSoup 对象代表整个 HTML 文档。

  • BeautifulSoup 提供了两种方式,一种是遍历,另一种是搜索,通常两者结合来完成查找任务。
>>> body_tag = soup.body  # 先定位到 body 标签,缩小搜索范围 
>>> body_tag.find_all("a")  #再从 body 中找 a 标签
[python]

  • 获取标签里面内容,除了可以使用 .string之外,还可以使用 get_text 方法,不同的地方在于前者返回的一个 NavigableString 对象,后者返回的是 unicode 类型的字符串。
    实际场景中我们一般使用 get_text 方法获取标签中的内容。
>>> p1 = body_tag.find('p').get_text()
>>> type(p1)

>>> p1
u'\xc8\xe7\xba\xce\xca\xb9\xd3\xc3BeautifulSoup'

>>> p2 = body_tag.find("p").string
>>> type(p2)

>>> p2
u'\xc8\xe7\xba\xce\xca\xb9\xd3\xc3BeautifulSoup'

8.numba 编译-知乎

  • numda 介绍

使用 jit 加速 Python 低效的 for 语句
使用 vectorize 实现 numpy 的 Ufunc 功能
使用 jit(nogil=True) 实现高效并发(多线程)
支持类编译numba.jitclass()

  • 对比效果显示,numpy 对大型矩阵运算速度和numba比较快,但是只有对numpy leizhi 的函数效果比较好,如np.min/np.sum.
import time
import numba  as nm
@nm.jit
def sum2d_numba(arr):
    M,N=arr.shape
    result=0.0
    for i in range(M):
        for j in range(N):
            result +=arr[i,j]
    return result

def sum2d_for(arr):
    M,N=arr.shape
    result=0.0
    for i in range(M):
        for j in range(N):
            result +=arr[i,j]
    return result

x=np.arange(10000).reshape(100,-1)
%timeit sum2d_numba(x)
%timeit sum2d_for(x)
%timeit np.sum(x)

#14.3 µs ± 413 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
#5.5 ms ± 134 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
#13.9 µs ± 249 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
  • numba 现在支持列列表生成式
@nm.jit
def f():
    return [x*2 for x in range(5)]
  • 虽然jit确实能让我们代码加速不少,但比之numpy的Ufunc还是要差很多.为此,我们可以用vectorize来定义出类似于Ufunc的函数,实现向量运算效果:
## 需要指定输入输出数据类型,及其是否允许并行,以及是否采取python 编译。
@nb.vectorize("float32(float32, float32)", target="parallel", nopython=True)
def add_with_vec(y, c):
    return y + c

7 .显示图片模块

url = "http://wx4.sinaimg.cn/large/d030806aly1fq1vn8j0ajj21ho28bduy.jpg"

rsp = requests.get(url, stream=True)
with open("1.jpg","wb") as f:
    for i in rsp.iter_content(chunk_size=1024):  # 边下载边存硬盘, chunk_size 可以自由调整为可以更好地适合您的用例的数字
        f.write(i)

from PIL import Image
img=Image.open("1.jpg")
img.show()

from IPython.display import Image
Image(url= "1.jpg")

6.知乎-枚举Enum

  • 设定一些常量,不需要修改。
  • 类似字典键值对,key不能重名,同时用unique,限制value是否允许重复
from enum import Enum, unique

@unique
class Color(Enum):
    red = 1
    pi_m=3.14
    #blue=1  ##报错:value 一样:ValueError: duplicate values found in : blue -> red

print(Color(1))
print(Color.pi_m.value)
Color.red
3.14

5.latex在ipython jupyter notebook中的使用

latex

4. time模块

image.png

3. IPython display

2.request

*

CSDN 博文 request-推荐
import requests  # 获取返回状态
'''
    带参数的GET请求:url 请求网站,params中wd关键词,rn显示的条目
    timeout 请求时间,allow_redirects = False 禁止跳转
'''
## GET方法

r = requests.get(url='http://dict.baidu.com/s', params={'wd':'python',"rn":10},timeout=1,allow_redirects = False)   #带参数的GET请求
print(r.url)   # 打印url 链接
print(r.status_code)  # 打印转态值,200正常
print(r.text) #print(r.ontent)  # 打印解码后的返回数据
''' response 属性及方法
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响应)抛出异常



## POST 方法

import requests
import json
 
data = {'some': 'data'}
headers = {'content-type': 'application/json',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
 
r = requests.post('https://api.github.com/some/endpoint', data=data, headers=headers)  #POST参数实例

1.Tqdm 是 Python 进度条库

# tqdm(iterator)

import time
from tqdm import tqdm  

for i in tqdm(range(100)):  
    #time.sleep(0.01)
    time.sleep(0.1)
    print("*"*(i+2))

你可能感兴趣的:(python 常用库)