江苏省建设监理协会网站,网站建设伍金手指下拉6,手机网站注册页面,虚拟机如何做网站文章目录 一. Python操作之-- 使用Python 提取PDF文件中的表格数据#xff01;二#xff1a;三#xff1a; Python中的 staticmethodclassmethod方法四#xff1a; 反斜杠 \五#xff1a; 终端的解释器提示符号修改六#xff1a; python使用json.dumps输出中文七#xf… 文章目录 一. Python操作之-- 使用Python 提取PDF文件中的表格数据二三 Python中的 staticmethodclassmethod方法四 反斜杠 \五 终端的解释器提示符号修改六 python使用json.dumps输出中文七 itertools函数的使用为高效循环而创建迭代器的函数八 将列表或者元祖中的数据合并为一个字符串九 判断某个参数是不是 另一种参数类型例如 某时间格式数据 str 2021-02-02 是不是时间格式十 时间格式的类型转换包括时间转换字符、字符转换时间等十一 conda创建环境和删除环境十三 Python 使用flask进行前端展示以及进行 分页 展示十四 Python使用 Flask中的 render_template() 函数十五python divmod() 返回的是商和余数的元祖十六 reshape()的使用十七 expand_dim(数组axis[]) 对数组进行维度扩展十八: as_list() 进行列表的转换例如将一个元组进行列表转换十九 解决Linux中Python导入包路径错误二十一Python中的string模块的使用 一. Python操作之-- 使用Python 提取PDF文件中的表格数据
Python提供了许多可用于pdf表格识别的库如camelot、tabula、pdfplumber等。 综合来看pdfplumber库的性能较佳能提取出完整、且相对规范的表格
该库的安装方式 pip install pdfplumber 库中提供两种PDF表格提取函数 .extract_tables() .extract_table() 这两种函数 .extract_tables() 可输出页面中的所有表格并且返回一个嵌套列表其结构层次为table→row→cell with pdfplumber.open(filepath,‘w’) as pdf: pdf 文件读取方式 page pdf.pages[45] #这里设置的是想要处理的页面
读取方式是 page.extract_tables()
.extract_table() 返回多个独立列表其结构层次为row→cell。 若页面中存在多个行数相同的表格则默认输出顶部表格 否则仅输出行数最多的一个表格。 注意此时表格的每一行都作为一个单独的列表列表中每个元素即为原表格的各个单元格内容。
在此基础上从PDF文件中提取表格数据一种思路就是将提取出来的列表视为一个字符串就 结合Python的正则表达式re模块进行字符串处理之后将其保存为以标准英文逗号分割、可被Excel识别的csv格式文件
二
import pygal 可以
pie_chart pygal.Pie() #1. 实现扇形图的绘制 #pie_chart pygal.Line() # 实现多重曲线趋势的绘制 #pie_chart pygal.Radar() # 可以实现正六边型的趋势绘制 pie_chart.title ‘’ pie_chart.add(‘name’,比例)
三 Python中的 staticmethodclassmethod方法
Python 中类中定义的方法可以是
classmethod方法 是装饰的类方法staticmethodclassmethod方法 是装饰的静态方法用的最多的还是不带装饰器的实例方法 装饰之后的函数在进行调用的时候会有着不同的形式
四 反斜杠 \
在行尾的时候用作续航符号在字符串中 、使用转义字符可一件普通的字符转化为有特殊含义的字符。 如 \n \t
五 终端的解释器提示符号修改
例如 将自带的 改为 ----- import sys sys.ps1 ‘-----’ 进行更改可以更改为任何东西
六 python使用json.dumps输出中文
在使用json.dumps时注意一个问题 import json print(json.dumps(‘中国’)) 返回的是 “\u4e2d\u56fd”
输出的会是 ‘中国’ 中的ascii字符码而不是真正的中文。
这是因为json.dumps序列化时对中文默认使用的ascii编码 想输出真正的中文需要指定ensure_asciiFalse
中文的时候正确使用方法 添加上ensure_ascii 参数 import json print(json.dumps(‘中国’, ensure_asciiFalse))
“中国”
七 itertools函数的使用为高效循环而创建迭代器的函数
下面的网址包含所有的itertools的模块函数 https://docs.python.org/zh-cn/3.8/library/itertools.html
八 将列表或者元祖中的数据合并为一个字符串
1. 语法 str.join(squence)
2. 示例 str - #指定字符之间的符号 seq (b,o,o,k) print str.join(seq) b-o-o-k # 输出结果九 判断某个参数是不是 另一种参数类型例如 某时间格式数据 str ‘2021-02-02’ 是不是时间格式
isinstace(str,datetime.datetime)十 时间格式的类型转换包括时间转换字符、字符转换时间等
import datetime1. 日期时间格式转字符 使用的是 strftime() 函数
date 2021-12-23
datetime.strptime(2021-12-23,%Y-%m-%d) #这里可以根据需要进行转换 例如没有中间的-符号date.strftime(%Y-%m-%d)
#2021-12-23
date.strftime(%Y%m%d)
#20211223
date.strftime(%Y-%m)
#2021-122. 字符转换日期时间
法一
datetime.strptime(2018-09-08,%Y-%m-%d)
#datetime.datetime(2018, 9, 8, 0, 0)法二 使用的是pandas里面的 to_datetime() 函数
import pandas as pdpd.to_datetime(2018-09-08)
#Timestamp(2018-09-08 00:00:00)
pd.to_datetime(201909,format%Y%m)
#Timestamp(2019-09-01 00:00:00)3. 数值转换日期
dt 20180908
datetime.strptime(str(dt),%Y%m%d)
#datetime.datetime(2018, 9, 8, 0, 0)4. pandas中的时间处理
import random
df pd.DataFrame({some_data : [random.randint(100,999) for i in range(1,10)],a_col : 2019-07-12,b_col : datetime.datetime.now().date(),c_col : time.time()},indexrange(1,10))十一 conda创建环境和删除环境
删除虚拟环境
推荐教程Python入门教程
conda remove -n your_env_name(虚拟环境名称) --all删除虚拟环境中的包
conda remove --name $your_env_name $package_name包名退出虚拟环境Linuxsource deactivate your_env_name(虚拟环境名称)Windowsdeactivate 也可以使用activate root切回root环境。十三 Python 使用flask进行前端展示以及进行 分页 展示
1. 使用flask进行前端展示2. 使用flask进行 分页 展示from flask_paginate import Pagination,get_page_parameter
# from flask import Flask, render_template,request
from flask_sqlalchemy import SQLAlchemy
上面的两个是我找到得两个进行分页的参数目前不知道区别以及期使用用途使用flask_paginate分页技术进行分页
使用参数
from flask_paginate import Pagination, get_page_parameter
from Config import DBsession, EventRecordDB, draughtFan, wind, and_, StatiscDataPagination: 类函数
get_page_parameter: 获取当前翻页的参数
上面的两个参数是flask-paginate的主要点1. 在视图函数定义方法
pagination Pagination(参数)
page request.args.get(get_page_parameter(), typeint, default1)Pagination.__init__(**kwargs) 注意标注 --- 的是重点关注参数
found0: 当使用搜索是使用
page: 当前页, 使用实例对象中的page -----------------------
per_page: 每页显示多少项, 可以使用数据表的切片slice操作来定义, per_page ----------------
page_parameter: 页面参数, 默认为page, http://localhost:5000/?page2
prev_label: 上一页, 默认为, 可以定义prev_label上一页
next_label: 下一页, 默认为, 可以定义next_label下一页
total: 总共有多少页 -----------------------
bs_version2: Bootstrap版本, 默认为版本2 -------------------------
注意: 如果使用的是Boostrap3的CDN, 那么就要设置bs_version3, 否则会无法正常显示
{{ pagination.links }} 这段 代码放在HTML页面中作用就是将我们的分页放在先要展示的位置 links 表示的是链接网址以上为主要参数的使用具体使用方法# 获取当前为第几页
page request.args.get(get_page_parameter(), typeint, default1)
# 定义每页显示多少项
start (page-1)*config.PER_PAGE
end start config.PER_PAGE
# 使用切片来显示每页显示多少项
posts PostModel.query.slice(start, end)
pagination Pagination(bs_version3, pagepage, totalPostModel.query.count())context {posts: posts,pagination: pagination,# ... others
}
return render_template(index.html, **context)2. 在模板中使用方法
直接在想要放置分页条的地方使用 ↓↓↓↓
{{ pagination.links }}十四 Python使用 Flask中的 render_template() 函数
render_template() 作用在Python代码中 直接生成 HTML 缺点很多比如笨拙效率低可读性差。
因此 Flask 提供了 Jinja2 模板引擎来帮助开发者高效灵活生成HTMLhtml模板文件的位置
模板即自己写好的模板html文件需要放在templates文件夹内。目录结构如下
1.
/application.py
/templates/hello.html
2.
/application/__init__.py/templates/hello.html
以上两种存放情况。具体的实施方法 render_template()函数是flask函数的他从模板文件夹templates中呈现给定的模板上下文。语法以及参数
import flask
flask.render_template(template_name, **context)render_template()函数需要调用flask包template_name 参数是 模板的文件名字 类型是字符串类型不可省略context 参数是 模板的参数 由模板参数和对应的值组成的字典可以省略的参数返回值: str render_template() 函数返回替换模板参数后的模板文本。有两种使用情况1. 模板中没有参数就是说不需要给模板中给定参数。例如!DOCTYPE htmlhtml langenheadmeta charsetUTF-8titleHello world/title/headbodyh1 Hello World! /h1/body/htmlimport flaskapp flask.Flask(__name__)app.route(/hello)def hello():return flask.render_template(hello_world.html)if __name__ __main__:app.run()运行后在浏览器中输入http://地址/hello结果如下2. 给模板中传递参数。例如 模板../templates/for.html如下!DOCTYPE htmlhtml langenheadmeta charsetUTF-8titleJinja2 Circulation Control/title/headbodyh1 {{product}} list: /h1ul{% for product in products %}li{{product}}/li{% endfor %}/ul/body/htmlimport flaskapp flask.Flask(__name__)app.route(/)def index():products [iphoneX, MacBook Pro, Huawei]kwargs {products: products}return flask.render_template(for.html, **kwargs)if __name__ __main__:app.run()十五python divmod() 返回的是商和余数的元祖 使用功能方法divmod(x, y)函数把除数和余数运算结果结合起来返回一个包含商和余数的元组(a // b, a % b)。# 我们这里要计算的是总页数 如果有余数的话还要1才是总页数。十六 reshape()的使用
例如 reshape(2,6) 就是将一个数转换成 2行 6列reshape(8,-1) 就是将一个数组转换成 8行 的数据至于是几列会自动进行计算。同理的(-1,5) 就是固定列的数量行数进行自动计算。十七 expand_dim(数组axis[]) 对数组进行维度扩展
一般的 axis[-1] 的意思就是在最后面进行维度扩展 [1,2,3] -- [1,2,3,1]
axis 多少 就是说在那个位置进行扩展 0,1,2,3 再多的话就会提示错误不管多少的
维度他们的数据总量是不变的。关键理解就是说 expand_dim(input,axis[]) input的shape是固定的扩展的结果就是在相应的维度上进行扩展 只要保证数据的参数量不变不过一般好像都是 1。
详细介绍的网址 https://blog.csdn.net/hong615771420/article/details/83448878#:~:textnp.%20expand_dims%20%E7%9A%84%E4%BD%9C%E7%94%A8%E6%98%AF%E9%80%9A%E8%BF%87%E5%9C%A8%E6%8C%87%E5%AE%9A%E4%BD%8D%E7%BD%AE%E6%8F%92%E5%85%A5%E6%96%B0%E7%9A%84%E8%BD%B4%E6%9D%A5%E6%89%A9%E5%B1%95%E6%95%B0%E7%BB%84%E5%BD%A2%E7%8A%B6%EF%BC%8C%20%E5%87%BD%E6%95%B0%E6%A0%BC%E5%BC%8F%E5%A6%82%E4%B8%8B%EF%BC%9A%20np.%20expand_dims%20%28array%2C%20axis%29,np.%20expand_dims%2C%20np%20.newaxis%29%E5%92%8C%E5%88%A0%E9%99%A4%E7%BB%B4%E5%BA%A6%20%28%20np%20.squeeze%29%E7%9A%84%E6%96%B9%E6%B3%95.%20cxx654%E7%9A%84%E5%8D%9A%E5%AE%A2.
十八: as_list() 进行列表的转换例如将一个元组进行列表转换
a (1,3)
a.as_list()
一般用于在TensorFlow中的获取某个 tensor(张量) 的形状后 get_shape().as_list()
这样使用如此可获取 某一维度的形状。十九 解决Linux中Python导入包路径错误
原因IDE环境下例如:pycharm 下会自动搜索代码所在的目录寻找相关的包而Linux环境下
直接运行 .py 文件只会搜索默认的路径此时需要把代码所在的目录添加到 sys.path 当中。解决步骤1. 终端进入Python键入 import sys 并且查看 print(sys.path)2. cd 进入上述打印出的路径的 site-packages 目录下3. 增加 .pth 文件 vim code_path.pth (若是没有这个文件此命令会自动生成该文件)4. 在该文件下添加你的代码目录(代码目录就是我们的项目文件所在目录),按 Esc 键入 :wq 进行保存。二十一Python中的string模块的使用
String模块中的常量 string.digits数字0~9 string.ascii_letters所有字母大小写 string.lowercase所有小写字母 string.printable可打印字符的字符串 string.punctuation所有标点 string.uppercase所有大写字母