|
|
51CTO旗下网站
|
|
移动端

春运渡劫?Python帮你12306抢回家的火车票

年味越来越淡,但我对过年的期待一直没变。为了理想,离开家乡。这一路,背上行囊,穿过人潮,千里迢迢。疲惫也好,激动也罢,总有家乡值得牵挂。由于乡愁泛滥成灾、爱情糜烂至极、友情西辞黄鹤,所以阿广今天教大家如果用Python抢火车票!解决你的乡情、爱情、友情,说不定还有基情?

作者:调皮的阿广来源:视学算法|2018-12-29 16:24

前言

年味越来越淡,但我对过年的期待一直没变。为了理想,离开家乡。这一路,背上行囊,穿过人潮,千里迢迢。疲惫也好,激动也罢,总有家乡值得牵挂。

春节是孟浩然“昨夜斗回北,今朝岁起东”的唏嘘,不仅感叹于“田家占气候,共说此年丰”的蹉跎岁月,更多感伤于这一年下来的“无禄尚忧农”自我调侃的碌碌无为;春节是董必武“共庆新年笑语哗,红岩士女赠梅花”的对新年的期待,也有“举杯互敬屠苏酒,散席分尝胜利茶。只有精忠能报国,更无乐土可为家。”的伟大抱负。

但是,所有的乡愁和感伤,最好的解药就是一张火车票。每当万事俱备,总是只欠东风,我依然是被一张5mm厚的火车票拦在了门外。隐隐约约在我眼前出现,然后又悄无声息的走掉,说的就是你,我花钱加速都抢不到的火车票。

大学四年以接近尾声,遗憾于爱情的“你好我爱你,再见,对不起”。这种遗憾经过反复斟酌和推敲,有那么一刻,我感觉你我之间的距离就是那张“近在眼前,远在天边”可望而不可及的火车票。

由于乡愁泛滥成灾、爱情糜烂至极、友情西辞黄鹤,所以阿广今天教大家如果用Python抢火车票!解决你的乡情、爱情、友情,说不定还有基情?

数据介绍

12306官方部分数据如下:

春运渡劫?Python帮你12306抢回家的火车票

实现过程

注:具有自然语言识别处理功能

(1)加载头文件

  1. from distutils.log import warn as printf 
  2. import sys 
  3. from bosonnlp import BosonNLP 
  4. import yaml 
  5. from os.path import expanduser 
  6. import os 
  7. import collections 
  8. import subprocess 
  9. import datetime 

(2)加载配置文件

  1. home = expanduser("~"
  2. with open(os.path.join(home,".ibot.yml")) as f: 
  3.    config = yaml.load(f) 
  4.    bosonnlp_token = config["token"

(3)解析字符串

  1. def parse(self, query_string): 
  2.        ""
  3.        input: 
  4.        1月12号 济南到兖州的高铁票 
  5.        output
  6.        [{'entity': [[0, 3, 'time'], [3, 4, 'location'], [5, 6, 'location']], # 需要理解实体出现的模式,这块需要理解上下文 
  7.        'tag': ['t''m''q''ns''p''ns''ude''n''n'], 
  8.         'word': ['1月''12''号''济南''到''兖州''的''硬座''票']}] 
  9.        ""
  10.        result = self.nlp.ner(query_string)[0] 
  11.        words = result['word'
  12.        tags = result['tag'
  13.        entities = result['entity'
  14.        return (words,entities,tags) 

(4)获得已识别的实体

  1. def get_entity(self,parsed_words,index_tuple): 
  2.        ""
  3.        获取已识别的实体 
  4.        采用filter 
  5.        参考 python cookbook部分 
  6.        input: 
  7.            entities : 二元组 
  8.            parsed_words : 解析好的词组 
  9.        ""
  10.        return parsed_words[index_tuple[0]:index_tuple[1]] 

(5)元组重新命名

  1. def format_entities(self,entities): 
  2.        ""
  3.        给元组命名 
  4.        ""
  5.        namedentity = collections.namedtuple('namedentity','index_begin index_end entity_name'
  6.        return [namedentity(entity[0],entity[1],entity[2]) for entity in entities] 

(6)获取解析时间戳

  1. def get_format_time(self,time_entity): 
  2.        ""
  3.        output 
  4.        {'timestamp''2018-12-20 23:30:29''type''timestamp'
  5.        ""
  6.        basetime = datetime.datetime.today() 
  7.        result = self.nlp.convert_time( 
  8.            time_entity, 
  9.            basetime) 
  10.        #print(result) 
  11.        timestamp = result["timestamp"
  12.        return timestamp.split(" ")[0] 

https://github.com/zandaoguang/MissHome

如何调用?

  1. iquery 济南 兖州 20190112 
  2. ibot 本周天从济南回老家兖州,帮我看下 
  3. ibot 本周五从兖州出发,打算去北京捡垃圾,帮我看下有没有车票 
  4. ib 这周六从南京回武夷山老家,帮我看下车票 
  5. ... 

查询结果并抢票

春运渡劫?Python帮你12306抢回家的火车票

阿广说

自从学了计算机,每逢思乡之情冉冉升起,只能通过加快敲击键盘的速度来忘记此时此刻的烽火三月、家书万金。

盼望着,盼望着,寒假来了,春天的脚步近了。在我们童颜尚驻时,过年缺少不了的部门就是走亲戚,有鱼肉之果腹,亦有无案牍之劳形。可后来的后来,我们长大了,走亲戚在无形之中成了一种“烦恼”。

我们累于东家跑西家蹿;我们累于各类繁文缛节;我们累于各式尬聊;我们累于招呼熊孩子;我们累于送礼送红包;我们累于各种解释;我们累于被明里奚落、暗里鄙视;我们累于装体面、撑面子。

春运渡劫?Python帮你12306抢回家的火车票

明明生活不止眼前的苟且,还有往后余生的苟且,可碍于面子,我们依然装作不但有诗和远方,还要有钱途的样子。

春运渡劫?Python帮你12306抢回家的火车票

如果把过年比作爱情,那岂是:长街长,烟花繁,你挑灯回看;短亭短,红尘辗,我把萧再叹?通俗点讲,我愿用三生烟火,换你一张通往家乡的火车票。

【编辑推荐】

  1. 舍弃Python,为何知乎选用Go重构推荐系统?
  2. 不受微软待见的Python,如何在八年内逆袭成功?
  3. 超有趣!手把手教你用Python实现实时“人脸检测”
  4. 人工智能时代,我用Python写了一个智能机器人来聊天,非常不错!
  5. Python基础知识大全:集合用法、文件操作、字符编码转换、函数
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Cisco网络工程案例精粹

《Cisco网络工程案例精粹》是一本以案例为基础兼顾知识概述的案例性书籍,所收录的案例都是笔者精心挑选出来的在网络工作中常见的案例。 ...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊