Python3是趋势,但是新浪SAE平台的便宜点的微服务,是Python2.7的。所以以下代码的环境是Python2.7.

原理是,一些关于政策的表,以这种Excel的方式存储在文件夹中:

创建一个类,并将主要的信息进行清洗后存入相关列表。将这个列表传入服务器,并将其渲染在模板中。

  • 数据类的建立。虽然传入的是身份证号,但实际上是以户为单位展示信息,所以每一户唯一的标识就是户的编号。将户编号的相应列表的每一行都渲染在网页中。
#/usr/bin/env python
# -*- coding: UTF-8 -*-
import pandas as pd
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os
import numpy as npinfoBasicPath = u'?????.xls'             #数据的来源表
moneyMessagePath = u'???'                 #政策的来源是这个文件夹
name = u'身份证号'                                 #查询是判断身份证号(姓名有重复,其他信息不利于准确查询,此处
checkID = u'户编号'                        #是以户编号为基础进行查询的
#获得顶部显示信息
class message():                        #message类获得全部要查询的信息huNumber = ''                   #户编号变量messageTop = ''                 #用于展示在网页顶端的字符串messTableList = []              #详细信息的dataframe,以列表形式存储在这个列表里#fileNamePrint = ''def basicMessage(self,idNum):           #获得基本信息,也就是户主姓名,脱贫年度等信息messageTable = pd.DataFrame(pd.read_excel(infoBasicPath))       #读取excel信息,并转化为dataframemessageTable[name] = messageTable[name].apply(lambda x: str(x)[:18].upper())     #将身份证号全部变为大写idNum = str(idNum)                                              #字符串化,否则可能出现自动识别为数字的情况if idNum!='':idNum = str(idNum)[:18].upper()                 #将用户输入的身份证号的x变为大写try:mask = messageTable[name].isin([idNum]) #如果身份证号在这个dataframe里,那么将读取这行的姓名 和 脱贫年度等信息,并组合为字符串littleData = messageTable[mask]littleData = littleData.reset_index()                         #抛弃原来的索引,重新建立索引huzhuName = str(littleData[u'姓名'][0])outYear = str(littleData[u'脱贫年度'][0])self.messageTop = u'姓名:'+huzhuName+u'           脱贫年度:'+ outYearself.huNumber = str(littleData[u'户编号'][0])except:self.messageTop = u'无信息'return self.messageTopdef moneyTable(self):           #输入身份证号,获得户编号之后,执行此函数,得到享受所有的政策if self.huNumber != '':for filename in os.listdir(moneyMessagePath):  # 读取文件名称,读取所有享受政策的文件if filename[-3:] == 'xls':targetPath = moneyMessagePath + '/' + filename  # 构造文件夹内每一个文件的绝对路径detailTableAll = pd.DataFrame(pd.read_excel(targetPath,dtype='str'))    #以文本形式读取,避免出现电话号码后面出现.0mask = detailTableAll[checkID].isin([self.huNumber])            #获取户编号所在的索引littleData = detailTableAll[mask]                       #以索引方式获得户主户编号的所有dataframelittleData = littleData[littleData.columns.drop(list(littleData.filter(regex=checkID)))]        #删除户编号所在的列(checkID就是户编号)if littleData.empty!=True:                              #如果得到的dataframe不为空,则清洗数据,并添加到列表中littleData = littleData.replace('0', np.nan)    #将数值0 统一变更为空值 np.nan是空值jisuanData = littleData.drop([u'人数',u'与户主关系'], 1)shengyuData = jisuanData.dropna(axis=1,how='all')               #删除全部为Nan的列nanData = shengyuData.drop(['Name'], 1)                        #删除name列,获得纯值的表haveData = nanData.dropna(axis=0,how='all')                     #删除空值行,获得有值的表realDataList = haveData.index.tolist()                          #获得有值的表格的索引列表realData = shengyuData.loc[realDataList, :]                      #获得纯数据的dataframerealDataShow = realData.replace(np.nan,'')                      #将空值统一改为 空if realDataShow.empty == False:self.messTableList.append(realDataShow)return self.messTableList
  • 这个数据传入flask服务器。
#/usr/bin/env python
# -*- coding: UTF-8 -*-
from flask import Flask,redirect
from flask import render_template
from flask import request,url_for
import newsMessageimport sysreload(sys)
sys.setdefaultencoding('utf-8')
#以上代码保证flask正常显示中文
app = Flask(__name__)@app.route('/',methods=['POST','GET'])          #以post 和 get方式获取数据
def index():if request.method == 'POST':                    #用post方法获取html中的数据,也就是传入数据searchID = request.form.get('searchInput')  #获得文本框传入的数据if len(str(searchID))>17:                   #若输入的身份证号大于contClass = newsMessage.message()  #实例化类oneMess = contClass.basicMessage(searchID)  #获得信息字符串del contClass.moneyTable()[-len(contClass.moneyTable()):]   #清空列表所有元素,不染oneList = contClass.moneyTable()        #将实例中列表元素清除之后,再获取新的内容return render_template('index.html',content = oneMess,dataList = oneList)   #向模板中传入数据else:return redirect(url_for('index'))           #如果身份证号输入有误,则重新定位到indexreturn render_template('index.html', content='',dataList = '')      #渲染模板 空值
if __name__ == '__main__':app.run()

flask模板的渲染。

<nav id="navbar" class="navbar-collapse collapse"><ul class="nav navbar-nav"><li><a>{{ content }}</a></li></ul><!-- mega-menu End --></nav><div class="col-md-7 col-sm-7 col-xs-12"><div class="romana_domain_search"><form  action="{{ url_for('index') }}" method="POST"><div class="romana_search_input"><input type="text" name='searchInput' id="searchInput" placeholder="请输入姓名"></div><div class="romana_search_submit"><input  type="submit" value="搜索"></div></form></div></div><div class="table_contant"><p>这里写基本内容 132627196301132826</p><div>{% for k in dataList %}<table border="1"><tr>{% for lieName in k.columns.values.tolist() %}<th>{{ lieName }}</th>{% endfor %}</tr>{% for dataJutiList in k.values.tolist() %}<tr>{% for cX in dataJutiList %}<td>{{ cX }}</td>{% endfor %}</tr>{% endfor %}</table><p>---------</p>{% endfor %}</div></div>

最终效果:

Flask实现身份证号查询相关信息(Python2.7)相关推荐

  1. 根据身份证号查询相关信息

    #include<stdio.h> #include<stdlib.h> #include<string.h>void date(); int main() {da ...

  2. javascript实现根据身份证号读取相关信息

    本文转载:https://www.jb51.net/article/58643.htm 这篇文章主要介绍了javascript实现根据身份证号读取相关信息,需要的朋友可以参考下 公民身份号码由六位数字 ...

  3. 根据身份证号获取相关信息(籍贯、性别、出生日期...)

    根据身份证号获取相关信息(籍贯.性别.出生日期-) 首先我的只是个demo,身份证号也是写死的.仅供参考! 通过访问其他HTTP接口,将身份证号当作参数.调用接口返回相关信息 效果展示: **接口地址 ...

  4. js如何实现扫描身份证识别_javascript实现根据身份证号读取相关信息

    公民身份号码由六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码组成. 地址码 前两位表示省,中间两位表示市,后两位表示县 顺序码 表示同一地址码所标识的区域范围内,对同年.月.日出生 ...

  5. 身份证号查询归属地的实际应用场景

    身份证号查询归属地是一种常见的信息安全服务.它以号段为基础,可以根据输入的身份证号来查询出归属地信息.该功能目前在很多领域中应用,在客汇宝APP上就可以利用身份证号码查询到归属地. 下面我们就来介绍下 ...

  6. 通过身份证号获取个人信息(JAVA代码)

    通过身份证号获取个人信息(JAVA代码) 个人思路 如果有错误,欢迎留言 代码 个人思路 文档下载地址: 身份证对应省区 1.首先对身份证进行输入 对身份证信息进行匹配看是否符合身份证规则,我是利用正 ...

  7. 车辆报价查询接口,通过车系名称查询相关信息

    车辆报价查询接口,通过车系名称,查询相关信息. 接口名称:车辆报价查询接口 接口平台:接口 接口地址:http://op.juhe.cn/onebox/car/query 支持格式:json 请求方式 ...

  8. GEE学习:按照行列号筛选鄱阳湖湖区影像数据并查询相关信息

    目录 一.问题描述: 二.分析步骤与代码: 1.分析步骤 2.python代码 三.拓展查询与分析 1.数据集属性的拓展查询 2.学习掌握的有关函数 3.查询分析代码 三.学习小结: 一.问题描述: ...

  9. layer 一张表按钮根据一个id 查询相关信息

    在一个页面 插入两张表单 点击左边详情就可以查每一订单相关信息进行查询 ================================================================ ...

最新文章

  1. python中的pop()函数和popleft()函数
  2. JavaScript replace() 方法
  3. spaugment--生成最小二乘增广矩阵
  4. OpenMP之双重for循环并行计算改进
  5. usermod使用方法
  6. 【熊猫多模式站群开发日志】权限控制拦截器
  7. 如何教女朋友学 Python?
  8. 允许telnet 通过root用户进行访问
  9. android自定义view案例,Android自定义View的实现方法实例详解
  10. NTKO控件安装:“文件存取错误”问题
  11. hscan命令redis中游标的含义
  12. 个人如何购买腾讯云服务器
  13. cdr怎么把矩形去掉一个边_cdr怎么消除图形的边框?
  14. 笔记本计算机声音小,笔记本没有声音,小编教你笔记本没有声音怎么修复
  15. Gephi安装教程——1
  16. 配置有误:由于权限不足而无法读取配置文件
  17. python求和:1/3+3/5+5/7+7/9+...+97/99
  18. 认认真真推荐 10 个优质自学平台
  19. IO流(输入流与输出流)
  20. 【自动化测试】Pytest+Appium+Allure 做 UI 自动化的那些事

热门文章

  1. OpenCV——保存图片和视频
  2. 软考高项 : (21)2016年上半年论文写作真题
  3. 如何使用ENVI进行精度验证步骤
  4. SQL语句 清空数据表
  5. linux下安装jdk, mysql,tomcat等application示例,并且开启MySQL远程访问权限
  6. Educoder - Java面向对象 - 类与对象各关卡题目总结
  7. 极坐标积分 matlab,matlab有关的极坐标与球面坐标计算三重积分0.ppt
  8. 病态条件数(Poor Conditioning)
  9. 2011年政治经济学模拟试题一(附答案)
  10. python实现矢量积、叉积、外积、张量积