Python 将json格式文件转存为RDF格式文件
来源:互联网 发布:青山水利造价软件 编辑:程序博客网 时间:2024/06/14 22:32
一、什么是json格式
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
举例:
{ "infoBox": { "籍贯:": "台湾", "性别:": "男", "经纪公司:": "杰威尔音乐有限公司", "出生年月:": "1979年1月18日", "主要成就:": "两届台湾金曲奖最佳国语男歌手获得十五座金曲奖(获奖最多)连续7年获得IFPI香港唱片销量大奖十大销量国语唱片", "出生地:": "台湾新北", "毕业院校:": "淡江中学", "英文名:": "Jay Chou", "民族:": "汉族", "血型:": "O", "职业:": "歌手、音乐人、制作人、导演、商人", "星座:": "魔羯座", "国籍:": "中国", "代表作品:": "龙卷风、简单爱、七里香、夜曲、青花瓷、稻香、头文字D、不能说的秘密、逆战、青蜂侠、天台", "中文名:": "周杰伦", "别名:": "周董" }, "openType:": ["艺人"], "infoName:": "周杰伦" }
二、什么是RDF格式
资源描述框架 (RDF) 是描述网络中资源的 W3C 标准。
RDF 是一个框架,用来描述网络资源,诸如网页的标题、作者、修改日期、内容以及版权信息等。
具体可参考W3Cschool RDF 教程
举例:
<?xml version="1.0" encoding="UTF-8"?><rdf:RDF xmlns:ns1="http://baike.com/resource/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://baike.com/resource/周杰伦"> <ns1:代表作品 rdf:resource="http://baike.com/resource/不能说的秘密"/> </rdf:Description></rdf:RDF>
三、读json文件
# -*- coding: utf-8 -*-import jsonf = open('data.json', 'r')for line in f: print line
结果:
四、存RDF文件
这里使用的是Python的一个库:RDFlib
安装使用参考:RDFLib/rdflib · GitHub
# -*- coding: utf-8 -*-import rdflibg = rdflib.Graph()s = rdflib.URIRef('http://baike.com/resource/周杰伦')p = rdflib.URIRef('http://baike.com/resource/代表作品')o = rdflib.URIRef('http://baike.com/resource/不能说的秘密')g.add((s, p, o))g.serialize('hello.rdf') # 默认以'xml'格式存储
结果:
五、json转RDF
最后这里是将上一篇《利用scrapy框架爬取互动百科的词条–存成json》存的json文件保存为RDF文件作为知识库保存起来
# -*- coding: utf-8 -*-import jsonimport reimport rdflibf = open('data.json', 'r')g1 = rdflib.Graph()cnt = 0for line in f: #txt = eval("{" + line + "}") txt = eval(line) cnt = cnt + 1 print cnt try: s = rdflib.URIRef('http://baike.com/resource/' + txt['infoName']) p = rdflib.URIRef('http://baike.com/resource/开放分类') opentype = re.split(r',', txt['openType']) for i in range(len(opentype) - 1): o = rdflib.URIRef('http://baike.com/resource/' + opentype[i]) g1.add((s, p, o)) o = rdflib.URIRef('http://baike.com/resource/' + opentype[len(opentype) - 1]) g1.add((s, p, o)) # g1.serialize('da.rdf') if len(txt['infoBox']) != 0: box = re.split(r',', txt['infoBox']) for num in range(len(box) - 1): lastbox = re.split(r':', box[num]) print len(lastbox) if len(lastbox) == 2: print lastbox[0] print lastbox[1] try: rtxt = re.compile( r'"| | | |:|:|、|。|\(|\)|(|)|℃|}|{') lastKey = rtxt.sub('', lastbox[0]) p = rdflib.URIRef( 'http://baike.com/resource/' + lastKey) rtxt = re.compile(r'"| |\>|}|{') lastTest = rtxt.sub('', lastbox[1]) lastTestChild = re.split( r'、|,|;|;|,|\|', lastTest) for i in range(len(lastTestChild) - 1): o = rdflib.URIRef( 'http://baike.com/resource/' + lastTestChild[i]) g1.add((s, p, o)) o = rdflib.URIRef( 'http://baike.com/resource/' + lastTestChild[len(lastTestChild) - 1]) g1.add((s, p, o)) # g1.serialize('da.rdf') except: pass except Exception as e: passg1.serialize('data.rdf')# print box[num]f.close()
测试数据与程序:点击下载
0 0
- Python 将json格式文件转存为RDF格式文件
- Python读写json格式文件
- Python 收集RSS网站内容并汇聚为Json格式文件
- Python怎么读写json格式文件
- python的json格式文件读写
- 使用Pandoc命令将Markdown格式文件转换为HTML格式文件
- caffe:将图像转化为LMDB格式文件
- python 含中文的json格式文件输出
- 利用Python PIL、cPickle将图片读取和保存为pkl格式文件
- java解析json格式文件
- C#解释Json格式文件
- android 读取JSON格式文件
- java解析json格式文件
- MySQL 导出 JSON 格式文件
- 【Android】解析.json格式文件
- Json格式文件读写
- 将PDF格式文件转为DOC格式文件
- KML格式文件转化为Shape格式文件
- intellij idea maven 使用
- Search Insert Position
- java将16进制与10进制互相转换
- KMP算法
- mysql:command not found问题解决
- Python 将json格式文件转存为RDF格式文件
- POJ 3468 A Simple Problem with Integers(线段树)
- maven错误处理
- springboot-mybatis—多数据源
- google浏览器提示https不是安全链接
- C# 验证码生成类
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- 逻辑卷管理
- Vue项目源码分析系列一