[关闭]
@Wishes 2018-10-30T07:45:43.000000Z 字数 6144 阅读 630

Python 常用包及其示例

  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import requests
  4. import json
  5. from base64 import b64encode
  6. def post(sess, url, headers=None, data=None):
  7. return sess.post(url, headers = headers, data=data)
  8. def main(cookie):
  9. session = requests.Session()
  10. img = open('id_search_200.png', 'rb').read()
  11. imgStr = '<img src="data:image/png;base64,' + b64encode(img) + '">'
  12. url = 'http://omds.sit.sf-express.com/dataplatform/rest/billing/feedback/upload'
  13. headers = {'content-type': 'application/json', 'Cookie': cookie}
  14. data = json.dumps(({'content': imgStr, 'type': 'data_issue'}))
  15. res = post(session, url, headers, data)
  16. print res.text.encode('utf-8')
  17. if __name__ == '__main__':
  18. cookie = None
  19. if len(sys.argv) > 1:
  20. cookie = sys.argv[1]
  21. main(cookie)

sys.argv 用来存的是输入的命令行参数,示例中运行的时候,可以执行如 python test.py JSESSIONID=13ii2srw9twfwdy915nkaeg2e 就可以将cookie传入main函数中。

  1. >>> import time
  2. >>> now = time.time()
  3. >>> now
  4. 1540791442.952
  5. >>> ts = time.localtime(now)
  6. >>> ts
  7. time.struct_time(tm_year=2018, tm_mon=10, tm_mday=29, tm_hour=13, tm_min=37, tm_sec=22, tm_wday=0, tm_yday=302, tm_isdst=0)
  8. >>> lst = list(ts)
  9. >>> lst[0] = 2019
  10. >>> time.mktime(lst)
  11. 1572327442.0
  12. >>> time.strftime('%Y-%m-%d %H:%M:%S', lst)
  13. '2019-10-29 13:37:22'
  14. >>> time.strptime('2018-08-15 10:27:36','%Y-%m-%d %H:%M:%S')
  15. time.struct_time(tm_year=2018, tm_mon=8, tm_mday=15, tm_hour=10, tm_min=27, tm_sec=36, tm_wday=2, tm_yday=227, tm_isdst=-1)
  1. from flask import Flask, request
  2. import logging, sys
  3. logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
  4. app = Flask(__name__)
  5. @app.route('/test', methods=['GET', 'POST'])
  6. def hello_world():
  7. if request.method == 'POST':
  8. print request.args.get('next')
  9. print request.get_json()
  10. print request.get_data()
  11. print dir(request)
  12. return 'Hello Flask!'
  13. if __name__ == '__main__':
  14. app.run(host='0.0.0.0', port=9090, threaded=True, debug=True)

flask 默认单线程运行,在某些情况下会有问题,比如写了死循环的时候,设置threaded=True是多线程模式。

  1. import xlwt
  2. import xlrd
  3. def write():
  4. wbk = xlwt.Workbook()
  5. sheet = wbk.add_sheet('sheet 1')
  6. sheet.write(0, 1, 'content')
  7. wbk.save('test.xls')
  8. def read():
  9. workbook = xlrd.open_workbook('test.xls')
  10. sheet_names= workbook.sheet_names()
  11. for sheet_name in sheet_names:
  12. print (sheet_name)
  13. sheet2 = workbook.sheet_by_name(sheet_name)
  14. rows = sheet2.row_values(0)
  15. print (rows[1])
  16. cols = sheet2.col_values(1)
  17. print (cols[0])
  1. with open('test.txt') as f:
  2. for line in f:
  3. print line
  4. content = open('test.txt').read()
  1. >>> lst = [2,3,1,4]
  2. >>> sorted(lst, lambda x1, x2: x1-x2)
  3. [1, 2, 3, 4]
  4. >>> sorted(lst, lambda x1, x2: x2-x1)
  5. [4, 3, 2, 1]
  1. import pymysql
  2. def get_conn(host, port, user, password, db):
  3. conn = pymysql.connect(host = host, user = user,
  4. password = password, db= db, port = port, charset='utf8')
  5. conn.autocommit(False)
  6. return conn
  7. def execute(sql, conn):
  8. cur = conn.cursor()
  9. try:
  10. cur.execute(sql)
  11. conn.commit()
  12. return cur.fetchall()
  13. except BaseException as e:
  14. conn.rollback()
  15. return None
  1. def transaction(execute):
  2. def commit(sql, conn):
  3. try:
  4. res = execute(sql, conn)
  5. conn.commit()
  6. except BaseException as e:
  7. conn.rollback()
  8. return res
  9. return commit
  10. @transaction
  11. def execute(sql, conn):
  12. cur = conn.cursor()
  13. cur.execute(sql)
  14. conn.commit()
  15. return cur.fetchall()
  1. import requests
  2. def retry(num):
  3. def wrapper(func):
  4. def request():
  5. for i in range(num):
  6. print i
  7. func()
  8. return request
  9. return wrapper
  10. @retry(10)
  11. def post():
  12. return requests.get('http://www.baidu.com')

Elasticsearch 基础

全文检索

对结构化与非结构化数据的检索。


分词

分词示例:

  1. >>> seg_list = jieba.cut(u'人民日报是中国共产党中央委员会机关报。')
  2. >>> print ' / '.join(seg_list).encode('gbk')
  3. 人民日报 / / 中国共产党中央委员会 / 机关报 /

以上述为例,使用的是正向最大匹配算法分词,还有其他分词如HMM(隐马尔可夫模型)正向最小分词等。如下为正向最大分词伪代码:

  1. public static List forwardSeg(String text){
  2. List result=new ArrayList();
  3. while(text.length()>0){
  4. int len = MAX_LENGTH;
  5. if(text.length() < MAX_LENGTH){
  6. len=text.length();
  7. }
  8. //取指定的最大长度 文本去字典中匹配
  9. String tryWord=text.substring(0, len);
  10. while(!dictory.contains(tryWord)){ //如果词典中不包含该段文本
  11. //如果长度为1 的话,且没有在字典中匹配,返回
  12. if(tryWord.length()==1){
  13. break;
  14. }
  15. //如果长度大于1且匹配不到,则长度减1,继续匹配
  16. tryWord=tryWord.substring(0, tryWord.length()-1);
  17. }
  18. // 得到分词结果tryWord
  19. result.add(tryWord);
  20. //移除字符串最左侧被分出的词tryWord,继续循环
  21. text=text.substring(tryWord.length());
  22. }
  23. return result;
  24. }

倒排索引

倒排列表用来某一个词出现在有哪些文档中。示例图如下:

倒排索引图

如果搜索 lucene hadoop,则只需要合并第一个和第三个链表。合并方式有顺序合并和跳表合并。


词袋模型与排序

词袋模型是指对于文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,文本中每个词的出现都是独立的,不依赖于其他词是否出现。
对于检索的关键词进行分词,得到的所有词进行量化,得到一个向量,例如搜索lucene hadoop,可表示为的向量;对于需要检索的文本集合,则需要对所有的文本进行分词,建立倒排索引,对于某一个文档,计算每一个词的权重,得到向量,那么查询与文本的向量余弦相似度公式如下:

=

最后根据相似度进行排序。


Elasticsearch 用法

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注