资讯专栏INFORMATION COLUMN

python大佬养成计划----读写json数据

CodeSheep / 368人阅读

摘要:是一种轻量级的数据交换格式,易于人阅读和编写。使用函数需要导入模块将对象编码成字符串用于解码数据。该函数返回字段的数据类型。

json

使用 Python 语言来编码和解码 JSON 对象。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。使用json函数需要导入json模块

json.dumps

将 Python 对象编码成 JSON 字符串

json.loads

用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

基础命令

将python对象编码成为json的字符串格式

d = {"name":"sheen",
     "age":17}
jsonStr = json.dumps(d) #{"name": "sheen", "age": 17} 

l = [1,3,5,1.2]
jsonList = json.dumps(l)    #[1, 3, 5, 1.2] 

将获取的json字符串解码为python的对象

pydict = json.loads(jsonStr)    #{"name": "sheen", "age": 17} 

pylist = json.loads(jsonList)   #[1, 3, 5, 1.2] 

将python对象编码成为json的字符串格式并写入文件中

with open("json.txt","w") as f :
    json.dump(d,f)

将文件中的json字符串解码为python的对象

with open("json.txt") as f:
    jsondict = json.load(f) #{"name": "sheen", "age": 17} 
json示例

给100个不同的用户一个value值,存放到文件"json_dump.txt",并且是json格式
json.dump()参数

indent

应该是一个非负的整型,如果是0,或者为空,则一行显示数据;否则会换行且按照indent的数量显示前面的空白

sort_keys

将数据根据keys的值进行排序

separators = ("每个元素间的分隔符", “key和value之间的分隔符”)

#给100个不同的用户一个value值
#存放到文件"json_dump.txt",并且是json格式
import json
import string
from random import choice

keys = ["user"+str(i) for i in range(100)]
values = string.ascii_lowercase+string.ascii_uppercase  #大小写字符串

dict = {choice(keys):choice(values) for i in range(100)}

with open("json_dump.txt","w") as f:
    #indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据;否则会换行且按照indent的数量显示前面的空白
    #sort_keys:将数据根据keys的值进行排序
    #separators = ("每个元素间的分隔符", “key和value之间的分隔符”)
    json.dump(dict,f,indent=4,sort_keys=True, separators=(";", "="))


#为何最后文件不够100行?
#因为随机选取的key值可能会重复,字典类型的key不允许重复,最后得到的数据会少于你给定的100次

查询IP地址

根据IP查询所在地、运营商等信息的一些API如下:

1. 淘宝的API(推荐):http://ip.taobao.com/service/getIpInfo.php?ip=110.84.0.129
2. 国外freegeoip.net(推荐):http://freegeoip.net/json/110.84.0.129 这个还提供了经纬度信息(但不一定准)
3. 新浪的API:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=110.84.0.129
4. 腾讯的网页查询(返回的非json格式): http://ip.qq.com/cgi-bin/searchip?searchip1=110.84.0.129
5. ip.cn的网页(返回的非json格式):http://www.ip.cn/index.php?ip=110.84.0.129
6. ip-api.com: http://ip-api.com/json/110.84.0.129

上述的API接口,大多有一个特点是, 返回的直接是个json格式

import json
from urllib.request import urlopen

# ip = input("请输入你要查询的Ip:")
ip = "8.8.8.8"
url = "http://ip.taobao.com/service/getIpInfo.php?ip=%s" %(ip)
print(url)
# 根据url获取网页的内容, 并且解码为utf-8格式, 识别中文;
text = urlopen(url).read().decode("utf-8")
# print(text,type(text))
data = json.loads(text)["data"]
country = data["country"]
country_id = data["country_id"]
print(country,country_id)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42441.html

相关文章

  • python大佬养成计划----flask的Session设置

    摘要:对象存储特定用户会话所需的属性及配置信息。当用户请求来自应用程序的页时,如果该用户还没有会话,则服务器将自动创建一个对象。当会话过期或被放弃后,服务器将终止该会话。因为的是通过加密之后放到了中。 什么是Session? cookie: 客户端浏览器的缓存; session: 服务端服务器的缓存; Session 和 Cookie类似,都是通过字典管理 key-value对。Sessi...

    Gilbertat 评论0 收藏0
  • python大佬养成计划----os,datetime,time模块补充

    摘要:是否则检验指定的对象是否存在。由于的模块实现主要调用库,所以各个平台可能有所不同。时间格式时间戳的方式通常来说,时间戳是指格林威治时间年月日时分秒北京时间年月日时分秒起至现在的总秒数。元组方式元组共有个元素,返回的函数主要有,,。 os模块 os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,...

    frank_fun 评论0 收藏0
  • python大佬养成计划----socket实现UDP通信

    摘要:是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对,则是面向无连接的协议。测试结果用两个命令行分别启动服务器和客户端测试开启服务端完成一次通信 UDP TCP是建立可靠连接, 并且通信双方都可以以流的形式发送数据。 相对TCP, UDP则是面向无连接的协议。使用UDP协议时, 不需要建立连接, 只需要知道对方的IP地址和端口号, 就可以直接发数据包。 但是, 能不能到达就不知道...

    Juven 评论0 收藏0
  • python大佬养成计划----HTML网页设计(表单)

    摘要:数据传输方式输入类控件表单元素也称表单控件,按照填写方式分为输入类和下拉菜单类。按钮的名字按钮上显示的文本重置菜单列表控件下拉菜单可以节省页面空间。是单标签,用来定义下拉菜单中的选项。表示初始被选中的选项。 当用户熟悉了静态网页制作后就能感受到它的功能单一,会想建立具有交互性的动态网站。动态网站经常用到的一个元素就是表单。表单是HTML的一个重要组成部分,是网站管理员与用户之间沟通的桥...

    nevermind 评论0 收藏0
  • python大佬养成计划----HTML网页设计(表单)

    摘要:数据传输方式输入类控件表单元素也称表单控件,按照填写方式分为输入类和下拉菜单类。按钮的名字按钮上显示的文本重置菜单列表控件下拉菜单可以节省页面空间。是单标签,用来定义下拉菜单中的选项。表示初始被选中的选项。 当用户熟悉了静态网页制作后就能感受到它的功能单一,会想建立具有交互性的动态网站。动态网站经常用到的一个元素就是表单。表单是HTML的一个重要组成部分,是网站管理员与用户之间沟通的桥...

    罗志环 评论0 收藏0

发表评论

0条评论

CodeSheep

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<