疯狂!丈母娘让我用Python算领证吉日
来源:【公众号】
Python技术
决定和女朋友去领证了,心里那个激动啊,无以言表!我们俩都是比较随性的,准备拿到户口本就去领。
可谁知女朋友回家拿户口本的时候,跟我说:最近可能领不了了!
what?到手的鸭子要飞了?我心里咯噔一下。
询问后才知道,丈母娘说领证可以,但是要选择一个良辰吉日,要求有俩:一个是看万年历,选取宜“婚假”的日子;一个是需要选择农历的双数日期,双数代表吉利。
听了之后,我拍着胸脯说没问题。接着准备去翻万年历了,可不想这时候女朋友来一句:你个呆子,还准备一天天地去翻啊?写个小程序不就1秒钟的事吗?
我拍了拍脑袋,对哦,还是老婆聪明!话不多说,打开电脑就开干。
思路和实现我在百度输入框输入“万年历”查询,弹出的第一个当然是百度自己的万年历咯,但是我不想在百度上耗时间,因为时间紧,任务重,我选取一个相对容易的。
这个网站看起来信息比较全,并且不是那种热门的大网站,所以应该获取信息相对容易些。
首页也比较清晰明了,我所需要的几大信息(日历、农历日期、黄历)都有。
接着,我们来看看页面的请求,来定位我们所需信息的请求。
我在这个页面不算多的请求里面发现了这个请求():
这好像就是我们的目标请求,我们来看看返回:
非常好,人家一次性把一年的数据都返回了,感觉好简单啊,都不用咱们一天天请求了。
我再仔细看了下这个返回,发现并没有那么简单,我没找到农历的日期:
{ "y": [ "祭祀", "塑绘", "开光", "裁衣", "冠笄", "嫁娶", "纳采", "拆卸", "修造", "动土", "竖柱", "上梁", "安床", "移徙", "入宅", "安香", "结网", "捕捉", "畋猎", "伐木", "进人口", "放水" ], "j": [ "出行", "安葬", "修坟", "开市" ], "ts": "占房床房内北", "c": "冲猪", "s": "煞东", "zc": "丁亥", "zh": "执", "yq": "五富 益後", "yj": "劫煞 小耗 复日 重日 元武"}
我收起了天真,又开始寻找获取农历日期的方法。我没有找到获取农历日期的请求,但是我发现了一个特别的请求:
这个请求并没有直接获取农历日期,而是用 JavaScript 计算的,我们可以看到这个请求里面的计算方法:
//====================================== 算出农历, 传入日期控件, 返回农历日期控件// 该控件属性有 .year .month .day .isLeap//sDObj = new Date(y,m,i+1); 当月1日日期function Lunar(objDate) { var i, leap = 0, temp = 0; var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate .getDate()) - Date.UTC(1900, 0, 31)) / 86400000; for (i = 1900; i < 2100 && offset > 0; i++) { temp = lYearDays(i); offset -= temp; } if (offset < 0) { offset += temp; i--; } this.year = i; leap = leapMonth(i); //闰哪个月 this.isLeap = false; for (i = 1; i < 13 && offset > 0; i++) { //闰月 if (leap > 0 && i == (leap + 1) && this.isLeap == false) { --i; this.isLeap = true; temp = leapDays(this.year); } else { temp = monthDays(this.year, i); } //解除闰月 if (this.isLeap == true && i == (leap + 1)) { this.isLeap = false; } offset -= temp; } if (offset == 0 && leap > 0 && i == leap + 1) { if (this.isLeap) { this.isLeap = false; } else { this.isLeap = true; --i; } } if (offset < 0) { offset += temp; --i; } this.month = i; this.day = offset + 1;}
当然,这个 js 文件里面还有好多其他诸如计算星期、节假日之类的方法,我们可以把这个 js 里面的方法实现用 python 来实现就可以计算出农历日期以及节假日之类的信息了。但是我的时间比较紧迫,所以我选择用最简单的办法——百度。将度娘里面别人写的方法直接拿来用,就不用重复造轮子了。
搜索可以发现好多计算万年历信息的方法,我从其中选取了一个作为工具类来用。
前奏已经弄完了,接下来就好办了,我们来看看代码怎么写。
第一步是获取某一年每天的信息:
def get_data(year): url = '%d.js' % year response = requests.get(url) text = response.text start_str = 'lmanac["%d"] =' % year his_end_str = ';if(typeof(lmanac_2345)!="undefined"){lmanac_2345();}' cur_end_str = ';if(typeof(lmanac_2345)!="undefined"){lmanac_2345()};' cur_year = datetime.datetime.now().year jsonstr = text.replace(start_str, '') if cur_year == year: jsonstr = jsonstr.replace(cur_end_str, '') else: jsonstr = jsonstr.replace(his_end_str, '') return jsonstr
这里需要注意的是,获取到的结果数据在 JSON 数据的前后都加了字符串干扰信息,我们需要将这些字符串给去掉才能解析 JSON。
你以为这样就完了吗?是不是发现用解析2021年的数据的方法去2020年的数据不行?你没看错,这里网站开发人员开了一个小玩笑,他们把结尾字符串里面的一个分号换了个位置。据我仔细观察发现,当年的返回结果中这个分号是在最后的,而其他年份的返回数据中这个分号是在大括号里面的。
获取到数据之后,我们就来计算日期:
def choose_day(year, jsonstr): jobj = json.loads(jsonstr) for day in jobj.keys(): y = jobj[day]['y'] if '嫁娶' in y: dtime = datetime.datetime(year, int(day[1:3]), int(day[3:5])) # 获取农历日期 ludar_date = lunarUtils.get_ludar_date(dtime) # 取得日,然后看是否是双数 if ludar_date[2] % 2 == 0: print('公历日期:%s,农历日期:%s' % (day, ludar_date))
这里面就相对比较简单了,先解析返回的 JSON 数据,然后遍历日期,获取每天的信息,看哪天宜“嫁娶”,就再获取这天的农历日期,看是不是双数,如果是的话,这就是我们的目标日期。
我最后获得的日期是这样子的:
公历日期:d0107,农历日期:(2020, 11, 24)公历日期:d0122,农历日期:(2020, 12, 10)公历日期:d0124,农历日期:(2020, 12, 12)公历日期:d0126,农历日期:(2020, 12, 14)公历日期:d0203,农历日期:(2020, 12, 22)公历日期:d0209,农历日期:(2020, 12, 28)公历日期:d0225,农历日期:(2021, 1, 14)公历日期:d0305,农历日期:(2021, 1, 22)公历日期:d0311,农历日期:(2021, 1, 28)公历日期:d0318,农历日期:(2021, 2, 6)公历日期:d0324,农历日期:(2021, 2, 12)公历日期:d0401,农历日期:(2021, 2, 20)公历日期:d0419,农历日期:(2021, 3, 8)公历日期:d0425,农历日期:(2021, 3, 14)公历日期:d0507,农历日期:(2021, 3, 26)公历日期:d0513,农历日期:(2021, 4, 2)公历日期:d0525,农历日期:(2021, 4, 14)公历日期:d0531,农历日期:(2021, 4, 20)公历日期:d0606,农历日期:(2021, 4, 26)公历日期:d0613,农历日期:(2021, 5, 4)公历日期:d0617,农历日期:(2021, 5, 8)公历日期:d0619,农历日期:(2021, 5, 10)公历日期:d0625,农历日期:(2021, 5, 16)公历日期:d0701,农历日期:(2021, 5, 22)公历日期:d0711,农历日期:(2021, 6, 2)公历日期:d0713,农历日期:(2021, 6, 4)公历日期:d0717,农历日期:(2021, 6, 8)公历日期:d0723,农历日期:(2021, 6, 14)公历日期:d0725,农历日期:(2021, 6, 16)公历日期:d0729,农历日期:(2021, 6, 20)公历日期:d0804,农历日期:(2021, 6, 26)公历日期:d0811,农历日期:(2021, 7, 4)公历日期:d0813,农历日期:(2021, 7, 6)公历日期:d0815,农历日期:(2021, 7, 8)公历日期:d0823,农历日期:(2021, 7, 16)公历日期:d0827,农历日期:(2021, 7, 20)公历日期:d0914,农历日期:(2021, 8, 8)公历日期:d0926,农历日期:(2021, 8, 20)公历日期:d1013,农历日期:(2021, 9, 8)公历日期:d1015,农历日期:(2021, 9, 10)公历日期:d1025,农历日期:(2021, 9, 20)公历日期:d1029,农历日期:(2021, 9, 24)公历日期:d1106,农历日期:(2021, 10, 2)公历日期:d1110,农历日期:(2021, 10, 6)公历日期:d1112,农历日期:(2021, 10, 8)公历日期:d1116,农历日期:(2021, 10, 12)公历日期:d1124,农历日期:(2021, 10, 20)公历日期:d1130,农历日期:(2021, 10, 26)公历日期:d1207,农历日期:(2021, 11, 4)公历日期:d1211,农历日期:(2021, 11, 8)公历日期:d1219,农历日期:(2021, 11, 16)公历日期:d1223,农历日期:(2021, 11, 20)公历日期:d1231,农历日期:(2021, 11, 28)
看了一下,今天就是个好日子,公历是0126,农历是1214,12+14=26,我觉得挺好,可惜今天错过了,只能推后了。我看了一下,要赶在年前领证的话,只有两个日期可选了,我想选2月3日,这天正好立春,是个好日子。
总结Python 应用无处不在,只要善于运用,我们的生活会更高效美好!我马上要领证了,大家可否点个赞祝福一下?
太牛了!马来西亚1月汽车销量65499辆 吉利旗下宝腾第二 挑战日系
马来西亚商会发布2024年1月汽车新车销量为6万5499辆,同比增长31%(2023年1月的50168辆),环比2023年12月下跌16%。农历新年假期之前,汽车消费旺盛。
具体来看马来西亚1月轿车销量达59394辆,同比增长33%,商用车销量6105辆,同比增长9%,去年同期为5582辆。1月轿车产量71666辆,同比增长32%;1月商用车产量4411辆,同比增长14%。
2023年全年马来西亚汽车品牌销量排行前五的是:
第一 Perodua第二国产车 33万0324辆,市场占有率41.4%(丰田旗下大发控股并提供技术)
第二 Proton宝腾 15万0976辆,市场占有率18.8%(中国吉利控股并提供技术)
第三 丰田汽车 10万6205辆,市场占有率13.3%
第四 本田汽车 8万0127辆,市场占有率10.1%
第五 三菱汽车 2万1718辆,市场占有率2.7%
宝腾汽车
吉利控股集团
马来西亚汽车市场主要还是本土车企占有大部分市场份额,只是股权不在自己手里,技术也是别人提供的[捂脸]。
吉利收购宝腾后,在吉利技术资金支持下宝腾死而复生,销量稳步增长,愈发想挑战马来西亚第一的宝座。
法律必备!快速查询案件归属地!(附河南省内各法院代表字)
大家好!作为一名律师,我们经常会收到许多案号。有时候,我们可能会忘记自己是否在某个地方有相关案件。但是,我今天要分享给大家一个非常实用的方法,可以通过各级法院代字表来查找具体的法院,轻松回忆案件的真相。
首先,我们需要下载各级法院代字表,并进行整理。这个代字表记录了不同案件号对应的法院信息。通过简单的对比,我们可以快速定位到具体的法院。
一旦定位到法院,我们就可以更加方便地回忆起相关案件。我们可以回顾案件的细节和背景,重新理清思路。这对于我们诉讼过程中的检查工作非常有帮助,并且可以提高我们对案件的认识和理解。
通过这个方法,我们可以更加详细地了解案件的地域分布和数量,为我们在特定地点的案件工作提供指引。同时,我们也可以看到各级法院的审判特点和实践经验,加深我们对司法体系的了解。
这个方法不仅适用于律师,对于普通公民也是非常有用的。有时候我们可能会被问到某个案件是否在某地上诉过,通过这个方法,我们可以迅速找到相关的法院,给出准确的回答。
希望今天分享的这个方法能够对大家有所帮助。无论是对于律师还是对于普通公民来说,了解案件的真相都是非常重要的。相信通过这个方法,我们可以更好地回忆案件的背景信息,并对法律的实践有更深入的了解。
愿大家都能掌握这个秘诀,在法律领域有更加全面和深入的了解。如果你对这个方法感兴趣,赶快试试看吧!相信你一定会有意想不到的收获!
河南省各级法院代字表
法院名称
法院
代字
区划
代码
对应行政区划
类型
河南省高级人民法院
豫
410000
河南省
1
河南省郑州市中级人民法院
豫01
410100
郑州市
1
郑州市中原区人民法院
豫0102
410102
郑州市中原区
1
郑州市二七区人民法院
豫0103
410103
郑州市二七区
1
郑州市管城回族区人民法院
豫0104
410104
郑州市管城回族区
1
郑州市金水区人民法院
豫0105
410105
郑州市金水区
1
郑州市上街区人民法院
豫0106
410106
郑州市上街区
1
郑州市惠济区人民法院
豫0108
410108
郑州市惠济区
1
中牟县人民法院
豫0122
410122
中牟县
1
巩义市人民法院
豫0181
410181
巩义市
1
荥阳市人民法院
豫0182
410182
荥阳市
1
新密市人民法院
豫0183
410183
新密市
1
新郑市人民法院
豫0184
410184
新郑市
1
登封市人民法院
豫0185
410185
登封市
1
郑州高新技术产业开发区人民法院
豫0191
4
河南省开封市中级人民法院
豫02
410200
开封市
1
开封市龙亭区人民法院
豫0202
410202
开封市龙亭区
1
开封市顺河回族区人民法院
豫0203
410203
开封市顺河回族区
1
开封市鼓楼区人民法院
豫0204
410204
开封市鼓楼区
1
开封市禹王台区人民法院
豫0205
410205
开封市禹王台区
1
开封市金明区人民法院[1]
豫0211
410202
开封市龙亭区
1
开封市祥符区人民法院
豫0212
410212
开封市祥符区
1
杞县人民法院
豫0221
410221
杞县
1
通许县人民法院
豫0222
410222
通许县
1
尉氏县人民法院
豫0223
410223
尉氏县
1
兰考县人民法院
豫0225
410225
兰考县
1
河南省洛阳市中级人民法院
豫03
410300
洛阳市
1
洛阳市老城区人民法院
豫0302
410302
洛阳市老城区
1
洛阳市西工区人民法院
豫0303
410303
洛阳市西工区
1
洛阳市瀍河回族区人民法院
豫0304
410304
洛阳市瀍河回族区
1
洛阳市涧西区人民法院
豫0305
410305
洛阳市涧西区
1
洛阳市吉利区人民法院
豫0306
410306
洛阳市吉利区
1
洛阳市洛龙区人民法院
豫0311
410311
洛阳市洛龙区
1
孟津县人民法院
豫0322
410322
孟津县
1
新安县人民法院
豫0323
410323
新安县
1
栾川县人民法院
豫0324
410324
栾川县
1
嵩县人民法院
豫0325
410325
嵩县
1
汝阳县人民法院
豫0326
410326
汝阳县
1
宜阳县人民法院
豫0327
410327
宜阳县
1
洛宁县人民法院
豫0328
410328
洛宁县
1
伊川县人民法院
豫0329
410329
伊川县
1
偃师市人民法院
豫0381
410381
偃师市
1
洛阳高新技术产业开发区人民法院
豫0391
4
河南省平顶山市中级人民法院
豫04
410400
平顶山市
1
平顶山市新华区人民法院
豫0402
410402
平顶山市新华区
1
平顶山市卫东区人民法院
豫0403
410403
平顶山市卫东区
1
平顶山市石龙区人民法院
豫0404
410404
平顶山市石龙区
1
平顶山市湛河区人民法院
豫0411
410411
平顶山市湛河区
1
宝丰县人民法院
豫0421
410421
宝丰县
1
叶县人民法院
豫0422
410422
叶县
1
鲁山县人民法院
豫0423
410423
鲁山县
1
郏县人民法院
豫0425
410425
郏县
1
舞钢市人民法院
豫0481
410481
舞钢市
1
汝州市人民法院
豫0482
410482
汝州市
1
河南省安阳市中级人民法院
豫05
410500
安阳市
1
安阳市文峰区人民法院
豫0502
410502
安阳市文峰区
1
安阳市北关区人民法院
豫0503
410503
安阳市北关区
1
安阳市殷都区人民法院
豫0505
410505
安阳市殷都区
1
安阳市龙安区人民法院
豫0506
410506
安阳市龙安区
1
安阳县人民法院
豫0522
410522
安阳县
1
汤阴县人民法院
豫0523
410523
汤阴县
1
滑县人民法院
豫0526
410526
滑县
1
内黄县人民法院
豫0527
410527
内黄县
1
林州市人民法院
豫0581
410581
林州市
1
河南省鹤壁市中级人民法院
豫06
410600
鹤壁市
1
鹤壁市鹤山区人民法院
豫0602
410602
鹤壁市鹤山区
1
鹤壁市山城区人民法院
豫0603
410603
鹤壁市山城区
1
鹤壁市淇滨区人民法院
豫0611
410611
鹤壁市淇滨区
1
浚县人民法院
豫0621
410621
浚县
1
淇县人民法院
豫0622
410622
淇县
1
河南省新乡市中级人民法院
豫07
410700
新乡市
1
新乡市红旗区人民法院
豫0702
410702
新乡市红旗区
1
新乡市卫滨区人民法院
豫0703
410703
新乡市卫滨区
1
新乡市凤泉区人民法院
豫0704
410704
新乡市凤泉区
1
新乡市牧野区人民法院
豫0711
410711
新乡市牧野区
1
新乡县人民法院
豫0721
410721
新乡县
1
获嘉县人民法院
豫0724
410724
获嘉县
1
原阳县人民法院
豫0725
410725
原阳县
1
延津县人民法院
豫0726
410726
延津县
1
封丘县人民法院
豫0727
410727
封丘县
1
长垣县人民法院
豫0728
410728
长垣县
1
卫辉市人民法院
豫0781
410781
卫辉市
1
辉县市人民法院
豫0782
410782
辉县市
1
河南省焦作市中级人民法院
豫08
410800
焦作市
1
焦作市解放区人民法院
豫0802
410802
焦作市解放区
1
焦作市中站区人民法院
豫0803
410803
焦作市中站区
1
焦作市马村区人民法院
豫0804
410804
焦作市马村区
1
焦作市山阳区人民法院
豫0811
410811
焦作市山阳区
1
修武县人民法院
豫0821
410821
修武县
1
博爱县人民法院
豫0822
410822
博爱县
1
武陟县人民法院
豫0823
410823
武陟县
1
温县人民法院
豫0825
410825
温县
1
沁阳市人民法院
豫0882
410882
沁阳市
1
孟州市人民法院
豫0883
410883
孟州市
1
河南省濮阳市中级人民法院
豫09
410900
濮阳市
1
濮阳市华龙区人民法院
豫0902
410902
濮阳市华龙区
1
清丰县人民法院
豫0922
410922
清丰县
1
南乐县人民法院
豫0923
410923
南乐县
1
范县人民法院
豫0926
410926
范县
1
台前县人民法院
豫0927
410927
台前县
1
濮阳县人民法院
豫0928
410928
濮阳县
1
河南省许昌市中级人民法院
豫10
411000
许昌市
1
许昌市魏都区人民法院
豫1002
411002
许昌市魏都区
1
许昌县人民法院
豫1023
411023
许昌县
1
鄢陵县人民法院
豫1024
411024
鄢陵县
1
襄城县人民法院
豫1025
411025
襄城县
1
禹州市人民法院
豫1081
411081
禹州市
1
长葛市人民法院
豫1082
411082
长葛市
1
河南省漯河市中级人民法院
豫11
411100
漯河市
1
漯河市源汇区人民法院
豫1102
411102
漯河市源汇区
1
漯河市郾城区人民法院
豫1103
411103
漯河市郾城区
1
漯河市召陵区人民法院
豫1104
411104
漯河市召陵区
1
舞阳县人民法院
豫1121
411121
舞阳县
1
临颍县人民法院
豫1122
411122
临颍县
1
河南省三门峡市中级人民法院
豫12
411200
三门峡市
1
三门峡市湖滨区人民法院
豫1202
411202
三门峡市湖滨区
1
渑池县人民法院
豫1221
411221
渑池县
1
陕县人民法院
豫1222
411222
陕县
1
卢氏县人民法院
豫1224
411224
卢氏县
1
义马市人民法院
豫1281
411281
义马市
1
灵宝市人民法院
豫1282
411282
灵宝市
1
河南省南阳市中级人民法院
豫13
411300
南阳市
1
南阳市宛城区人民法院
豫1302
411302
南阳市宛城区
1
南阳市卧龙区人民法院
豫1303
411303
南阳市卧龙区
1
南召县人民法院
豫1321
411321
南召县
1
方城县人民法院
豫1322
411322
方城县
1
西峡县人民法院
豫1323
411323
西峡县
1
镇平县人民法院
豫1324
411324
镇平县
1
内乡县人民法院
豫1325
411325
内乡县
1
淅川县人民法院
豫1326
411326
淅川县
1
社旗县人民法院
豫1327
411327
社旗县
1
唐河县人民法院
豫1328
411328
唐河县
1
新野县人民法院
豫1329
411329
新野县
1
桐柏县人民法院
豫1330
411330
桐柏县
1
邓州市人民法院
豫1381
411381
邓州市
1
河南省商丘市中级人民法院
豫14
411400
商丘市
1
商丘市梁园区人民法院
豫1402
411402
商丘市梁园区
1
商丘市睢阳区人民法院
豫1403
411403
商丘市睢阳区
1
民权县人民法院
豫1421
411421
民权县
1
睢县人民法院
豫1422
411422
睢县
1
宁陵县人民法院
豫1423
411423
宁陵县
1
柘城县人民法院
豫1424
411424
柘城县
1
虞城县人民法院
豫1425
411425
虞城县
1
夏邑县人民法院
豫1426
411426
夏邑县
1
永城市人民法院
豫1481
411481
永城市
1
河南省信阳市中级人民法院
豫15
411500
信阳市
1
信阳市浉河区人民法院
豫1502
411502
信阳市浉河区
1
信阳市平桥区人民法院
豫1503
411503
信阳市平桥区
1
罗山县人民法院
豫1521
411521
罗山县
1
光山县人民法院
豫1522
411522
光山县
1
新县人民法院
豫1523
411523
新县
1
商城县人民法院
豫1524
411524
商城县
1
固始县人民法院
豫1525
411525
固始县
1
潢川县人民法院
豫1526
411526
潢川县
1
淮滨县人民法院
豫1527
411527
淮滨县
1
息县人民法院
豫1528
411528
息县
1
河南省周口市中级人民法院
豫16
411600
周口市
1
周口市川汇区人民法院
豫1602
411602
周口市川汇区
1
扶沟县人民法院
豫1621
411621
扶沟县
1
西华县人民法院
豫1622
411622
西华县
1
商水县人民法院
豫1623
411623
商水县
1
沈丘县人民法院
豫1624
411624
沈丘县
1
郸城县人民法院
豫1625
411625
郸城县
1
淮阳县人民法院
豫1626
411626
淮阳县
1
太康县人民法院
豫1627
411627
太康县
1
鹿邑县人民法院
豫1628
411628
鹿邑县
1
项城市人民法院
豫1681
411681
项城市
1
河南省驻马店市中级人民法院
豫17
411700
驻马店市
1
驻马店市驿城区人民法院
豫1702
411702
驻马店市驿城区
1
西平县人民法院
豫1721
411721
西平县
1
上蔡县人民法院
豫1722
411722
上蔡县
1
平舆县人民法院
豫1723
411723
平舆县
1
正阳县人民法院
豫1724
411724
正阳县
1
确山县人民法院
豫1725
411725
确山县
1
泌阳县人民法院
豫1726
411726
泌阳县
1
汝南县人民法院
豫1727
411727
汝南县
1
遂平县人民法院
豫1728
411728
遂平县
1
新蔡县人民法院
豫1729
411729
新蔡县
1
郑州铁路运输中级法院
豫71
3
郑州铁路运输法院
豫7101
3
洛阳铁路运输法院
豫7102
3
河南省济源中级人民法院
豫96
5
济源市人民法院
豫9001
419001
济源市
1
金明区已撤并为龙亭区,但金明区人民法院尚未作相应调整,故仍按原金明区行政区划代码编制该法院代字。 ↑