简介:本文首发于个人公众号「视学算法」,作者阿广,一个专注于大数据、人工智能和算法的学习平台,也是一个保送中科院软件研究所直博生的自留地。人生苦短,我愿做您最忠实的技术支持伙伴!一起用代码改变世界!

前言

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

但是,所有的乡愁和感伤,最好的解药就是一张火车票。每当万事俱备,总是只欠东风,我依然是被一张 5mm 厚的火车票拦在了门外。隐隐约约在我眼前出现,然后又悄无声息的走掉,说的就是你,我花钱加速都抢不到的火车票。所以阿广今天教大家如何用 Python 抢火车票!解决你的乡情、爱情、友情,说不定还有基情?

数据介绍

12306 官方部分数据如下:

实现过程

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

(1) 加载头文件

from distutils.log import warn as printf
import sys
from bosonnlp import BosonNLP
import yaml
from os.path import expanduser
import os
import collections
import subprocess
import datetime

(2) 加载配置文件

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

(3) 解析字符串

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

(4) 获得已识别的实体

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

(5) 元组重新命名

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

(6) 获取解析时间戳

def get_format_time(self,time_entity):
       """
       output
       {'timestamp': '2018-12-20 23:30:29', 'type': 'timestamp'}
       """
       basetime = datetime.datetime.today()
       result = self.nlp.convert_time(
           time_entity,
           basetime)
       #print(result)
       timestamp = result["timestamp"]
       return timestamp.split(" ")[0]

查看源码:

https://github.com/zandaoguang/MissHome

如何调用?

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

查询结果并抢票

写在最后

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

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

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

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

——致此刻远在他乡奋斗的你们

(*本文为AI科技大本营转载文章,转载请联系原作者)

推荐

推荐阅读

  • 真的,Pornhub比今日头条或是Netflix更了解你爱看什么

  • 印度小哥“神剑”:PDF提取表格so easy!

  • 老程序员肺腑忠告:千万别一辈子靠技术生存!

  • 开除“野狗”式程序员,团队的效率提高了

  • 微博回应裁员;罗永浩股权被冻结;“隐形贫困”人群最爱苹果 | 极客头条

  • 企业云存储建设之路

  • 特别策划 | 盘点区块链的2018:技术与工具演进篇

  • 春运渡劫!会Python能帮我抢回家的火车票吗?

  • 技术流 | 手把手教你用Python设计一个命令行界面

春运渡劫!Python给我抢回家的火车票相关推荐

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

    数据介绍 12306官方部分数据如下: Python学习资料或者需要代码.视频加Python学习群:960410445 实现过程 注:具有自然语言识别处理功能 (1)加载头文件 (2)加载配置文件 ( ...

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

    前言 年味越来越淡,但我对过年的期待一直没变.为了理想,离开家乡.这一路,背上行囊,穿过人潮,千里迢迢.疲惫也好,激动也罢,总有家乡值得牵挂. 但是,所有的乡愁和感伤,最好的解药就是一张火车票.每当万 ...

  3. 程序员硬核“Python抢票教程”,帮你抢回家车票(附源码)

    前言 想信大家逢年过节都遇到过有钱买不到车票的烦恼,,今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool.下面话不多说了,来一起看看详细的介绍吧. 先准备好: 12306网站用户名和密码 ch ...

  4. python100行代码-100行Python代码自动抢火车票!

    今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool. 先准备好: 1)12306网站用户名和密码 2)chrome浏览器及下载chromedriver 3)下载Python代码,来自网络整理 ...

  5. python编写抢座位软件_程序员硬核Python抢票教程”,帮你抢回家车票

    盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...

  6. 秀动app抢票脚本_程序员硬核quot;Python抢票教程”,帮你抢回家车票

    盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...

  7. 有人用python抢到过吗_再不看就晚了,我用Python抢到了回家的火车票!

    原标题:再不看就晚了,我用Python抢到了回家的火车票! 不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票 ...

  8. python12306抢学生票票下载_再不看就晚了,我用Python抢到了回家的火车票!

    不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机 ...

  9. 再不看就晚了,我用Python抢到了回家的火车票!

    " 不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都 ...

最新文章

  1. Python应用与实践【转】
  2. pro android学习笔记,Pro Android学习笔记(六八):HTTP服务(2):HTTP POST-Go语言中文社区...
  3. 通俗易懂,java8 .stream().map().collect()用法
  4. 《零基础看得懂的C语言入门教程 》——(六)轻轻松松了解C语言的逻辑运算
  5. Java设计模式之迭代器模式
  6. 镶套iframe 鼠标滚动无效解决办法
  7. 一个强大的图表库 -- ECharts
  8. csv java 科学计数法_Java入门笔记1/0(输入与输出)
  9. python 并发_Python bin()
  10. 8个优质自学网站收藏
  11. 点云高斯曲率计算(MATLAB)
  12. QDUOJ 93 - 分辣条(01背包)
  13. 使用 pandoc 进行文档转换(markdown转pdf)
  14. 极限中0除以常数_酶动力学中的一些常数简介
  15. 实现sqlite datediff日期时间相减(日期差)的方法
  16. 这个时代,“寒门再难处贵子”【转载】
  17. 0x80070091-Win10系统还原时的救命办法
  18. Scala特质trait
  19. Arduino ESP32Web配网
  20. 说一说关于破解支付宝AR红包的事

热门文章

  1. POJ 3070 Fibonacci
  2. 【.Net MF网络开发板研究-04】Socket编程之服务端
  3. 个人博客打不开时检查下github.com的ip地址是否更改/修改博客内容字体、颜色及大小
  4. 异常处理机制(Begin try Begin Catch)
  5. Java多线程的同步机制(synchronized)
  6. 未能加载文件或程序集“Report.Basic”或它的某一个依赖项。试图加载格式不正确的程序...
  7. 什么是离散的Hopfield网络?
  8. 【ACM】杭电OJ 2005
  9. 广东电大计算机绘图试题,电大计算机绘图期末复习试题及答案参考小抄.doc
  10. 广东科技学院专插本c语言考卷_广东科技学院第二届红色文化节之红色影视经典配音大赛决赛...