首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python:JSON,TIME模块使用技巧

1:JSON写入中文到文件内

最近在用Python做接口请求,以及批量生成接口所需Data。再此过程中发现一些小问题。

起初是用pycharm生成数据,再用JSON模块转JSON格式通过requests模块上传数据。可能是pycharm默认是UTF-8编码格式,通过requests模块上传后,程序数据库内中文显示正常。

但是后来我只用pycharm批量生成数据以JSON格式写入到TXT文本(文本打开模式已经指定:encoding = 'utf-8')内,打开TXT文本发现,中文全部以Unicode编码保存了。

通过上面截图可以看出,第一个print输出的信息内中文是以Unicode编码格式展示的。

下面一个print才真正的以中文显示了。

通过上面print对比可以发现。在json.dumps('所需参数',ensure_ascii=False)。添加:ensure_ascii=False。可以解决此类问题,文件写入以此同理。

原因说明

这是因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False

# 示例代码

import json

print(json.dumps('Python自学之路'))

# 输出结果:"Python\u81ea\u5b66\u4e4b\u8def"

print(json.dumps('Python自学之路',ensure_ascii=False))

# 输出结果:"Python自学之路"

2:自动生成想要的日期

由于项目所需数据为借还款数据,因此参数内需携带订单日期(年月日时分秒),还款日期(年月日)。

一开始并没有发现有这个模块,实现方式如下。

因为在17年12月底。每天的日的数字都大于7。所以生成的日期看似没什么问题。

但是节后回来我一运行程序就报错了,后来我调试输出了下,才发现这个问题。就像下图一样的结果,这种日期表现方式明显不对。

后来只能求救度娘,谷哥了。

果不其然,Python开发者们早就预料到此种应用方式。官方模块里都已经自带这种操作方式。

# 示例代码

from datetime import datetime, timedelta

d = datetime.now()

# 以下两种方法同价,看个人习惯爱好使用

for a in range(1,8):

d1 = d - timedelta(days=a)

print(d1)

# 输出结果

# 2018-01-04 10:30:52.420493

# 2018-01-03 10:30:52.420493

# 2018-01-02 10:30:52.420493

# 2018-01-01 10:30:52.420493

# 2017-12-31 10:30:52.420493

# 2017-12-30 10:30:52.420493

# 2017-12-29 10:30:52.420493

print('')

for a in range(-7,0):

d1 = d + timedelta(days=a)

print(d1)

# 输出结果

# 2017-12-29 10:30:52.420493

# 2017-12-30 10:30:52.420493

# 2017-12-31 10:30:52.420493

# 2018-01-01 10:30:52.420493

# 2018-01-02 10:30:52.420493

# 2018-01-03 10:30:52.420493

# 2018-01-04 10:30:52.420493

使用总结

想生成某日日期,通过改变days变量就可以轻松达到效果。

以上为本人使用过程中遇到的小问题,通过度娘,谷哥,获取到各位前辈的使用技巧。使工作效率大大提升。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180105G086RS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券