前言
年味越来越淡,但我对过年的期待一直没变。为了理想,离开家乡。这一路,背上行囊,穿过人潮,千里迢迢。疲惫也好,激动也罢,总有家乡值得牵挂。
春节是孟浩然“昨夜斗回北,今朝岁起东”的唏嘘,不仅感叹于“田家占气候,共说此年丰”的蹉跎岁月,更多感伤于这一年下来的“无禄尚忧农”自我调侃的碌碌无为;春节是董必武“共庆新年笑语哗,红岩士女赠梅花”的对新年的期待,也有“举杯互敬屠苏酒,散席分尝胜利茶。只有精忠能报国,更无乐土可为家。”的伟大抱负。
但是,所有的乡愁和感伤,最好的解药就是一张火车票。每当万事俱备,总是只欠东风,我依然是被一张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 这周六从南京回武夷山老家,帮我看下车票
- ...
查询结果并抢票
阿广说
自从学了计算机,每逢思乡之情冉冉升起,只能通过加快敲击键盘的速度来忘记此时此刻的烽火三月、家书万金。
盼望着,盼望着,寒假来了,春天的脚步近了。在我们童颜尚驻时,过年缺少不了的部门就是走亲戚,有鱼肉之果腹,亦有无案牍之劳形。可后来的后来,我们长大了,走亲戚在无形之中成了一种“烦恼”。
我们累于东家跑西家蹿;我们累于各类繁文缛节;我们累于各式尬聊;我们累于招呼熊孩子;我们累于送礼送红包;我们累于各种解释;我们累于被明里奚落、暗里鄙视;我们累于装体面、撑面子。
明明生活不止眼前的苟且,还有往后余生的苟且,可碍于面子,我们依然装作不但有诗和远方,还要有钱途的样子。
如果把过年比作爱情,那岂是:长街长,烟花繁,你挑灯回看;短亭短,红尘辗,我把萧再叹?通俗点讲,我愿用三生烟火,换你一张通往家乡的火车票。