10.颜色显示模块
-
linux
-
windows
# https://www.jianshu.com/p/e1bd64c2df4e
# 其格式为:\033[显示方式;前景色;后景色m
import console
print("\033[5;32m hello")
print("\033[1;31;40m你好!\033[0m friends ")
碱基彩色显示
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="")
9.BeatifulSoup
bs4 中find和select 匹配差异:
find属于模糊匹配,select 精确匹配(ccs 标签)
BeatifulSoup 将 HTML 抽象成为 4 类主要的数据类型,分别是
Tag
,NavigableString
,BeautifulSoup
,Comment
。每个标签节点就是一个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模块
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))