python将知识图谱的节点关系(CSV或其他格式)转换成Echarts所需的json格式

前言:
1. 此代码以如下(CSV)格式的数据为例,
故事 时间 地点 人物
xx 2020 安徽合肥 小戈
并处理保存为如
{"data": [{"name": "xx"}, {"name": "2020"}, {"name": "\u5b89\u5fbd\u5408\u80a5"}, {"name": "\u5c0f\u6208"}], "links": [{"source": "2020", "target": "2020", "name": "\u65f6\u95f4"}, {"source": "2020", "target": "\u5b89\u5fbd\u5408\u80a5", "name": "\u5730\u70b9"}, {"source": "2020", "target": "\u5c0f\u6208", "name": "\u4eba\u7269"}]}
的JSON文件(中文默认为unicode编码)
2. Echarts得到数据并引用时,如下直接放入即可
,
data: jsonData.data,
links: jsonData.links
3. 得学会举一反三
import csv
import json # 开始读取数据
# 开始转换为json格式数据 data_json = "{\"data\": ["
links = ", \"links\": ["
data = []
relationship = ['时间', '地点', '人物']
# 使用test.csv,这只是所有数据的一部分
with open('test.csv', encoding="utf-8") as csvfile:
csv_reader = csv.reader(csvfile) # 使用csv.reader读取csvfile中的文件
data_header = next(csv_reader) # 读取第一行每一列的标题
# print(data_header)
for row in csv_reader: # 将csv 文件中的数据保存到data_data中
for i in range(len(data_header)):
if row[i] not in data and row[i] != '':
data.append(row[i])
data_json = data_json + '{\"name\":"' + row[i] + '"},'
# 至此,我们已经获得了所有节点
for index, relation in enumerate(relationship):
links = links + '{\"source\":"' + row[1] + '",\"target\":"' + row[index+1] + '\",\"name\":\"' + relation + '\"},'
# 至此,我们已经获得了所有关系
# print(len(data))
data_json = data_json.rstrip(',')
data_json += "]"
# print(data_json)
# 至此,节点已经转换完成,接下来添加关系
links = links.rstrip(',')
links += "]}"
# print(links)
data_json += links
# print(data_json)
# 至此,我们已经获得了data_json数据
# 开始写入json文件
new_data = json.loads(data_json, strict=False)
# print(new_data)
with open("test_result.json", "w", ) as f:
json.dump(new_data, f)
# 至此我们已经获得了json数据,嫌格式不好看的话可以去网上自己格式化一下

最新文章

  1. MMORPG大型游戏设计与开发(客户端架构 part4 of vegine)
  2. Codevs 1299 切水果
  3. POJ 3461 Oulipo
  4. Git超级实用使用教程
  5. Android ListView标题置顶效果实现
  6. Oracle删除所有表
  7. 【图论】【宽搜】【染色】NCPC 2014 A Ades
  8. Hadoop 1、在虚拟机上进行 HDFS 安装
  9. 转 SSH框架搭建详细图文教程
  10. 射频识别技术漫谈(19)——Desfire的3次握手认证和段密码生成
  11. jsonp的原理和实现
  12. springMVC学习总结(二)路径映射和请求方法限定
  13. c++类的基础
  14. ubuntu16.04 Golang语言开发环境搭建
  15. centos7下/etc/rc.local文件里配置的开机启动项不执行的解决办法
  16. node多文件处理方法
  17. 《Linux 性能及调优指南》1.5 网络子系统
  18. CentOS NFS服务器的搭建与配置
  19. nc命令的常用参数介绍
  20. uva1452

热门文章

  1. Servlet简介和ServletContext
  2. 用浏览器打开pdf格式的文件默认全屏显示
  3. pytest框架插件源码_关于钩子方法调用部分的简单理解(pytest_runtest_makereport)
  4. Spring全家桶(二)之SpringMVC总结
  5. Unity 使整个UnityUI变成彩色的BUG
  6. 【易语言】exui超级列表框使用方法
  7. react fiber 的运行机制
  8. 808.11ac的MAC层
  9. GIT Authentication failed for错误问题处理
  10. 关于matlab2011b 32bit无法成功激活