V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wico77
V2EX  ›  Python

python 如何合并两个 json 文件

  •  
  •   wico77 · 2015-02-10 23:41:46 +08:00 · 19259 次点击
    这是一个创建于 3580 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT
    不是合并两个普通文件。是json文件,合并后成为一个大的json文件

    13 条回复    2015-02-11 17:13:46 +08:00
    kslr
        1
    kslr  
       2015-02-10 23:54:48 +08:00 via Android
    Load dict
    Kilerd
        2
    Kilerd  
       2015-02-11 00:23:15 +08:00 via Android
    先转成两个dict,然后合并,再转成json
    ricorico
        3
    ricorico  
       2015-02-11 00:30:48 +08:00 via iPad
    先 read,然后 json.loads,之后调用 dict 的 update 方法合并?
    要考虑有没有相同的 key,不知道具体要求…
    wico77
        4
    wico77  
    OP
       2015-02-11 00:39:30 +08:00
    @ricorico
    import glob
    import json

    files = glob.glob('*.json')
    result = []
    for file in files:
    f = open(file,'r')
    a = json.load(f)
    for b in a:
    result.append(b)

    print len(result)

    outfile = json.dumps(result)

    这样对吗
    NeoAtlantis
        5
    NeoAtlantis  
       2015-02-11 00:40:53 +08:00   ❤️ 1
    怎么合并……json不一定是dict的形式,也可以一开始就是list呢,也可以就是字符串或者Boolean或者数字呢……看你要求了,不过一般来说用json那个库应该能搞定。
    NeoAtlantis
        6
    NeoAtlantis  
       2015-02-11 00:43:22 +08:00


    以上都是合法的json内容
    icedx
        7
    icedx  
       2015-02-11 00:43:45 +08:00
    @ricorico 正解
    Septembers
        8
    Septembers  
       2015-02-11 03:56:42 +08:00
    import json
    json.dump(open('target.json'), [json.load(open('source1.json')), json.load(open('source2.json'))])
    Septembers
        9
    Septembers  
       2015-02-11 03:57:33 +08:00   ❤️ 1
    import json
    json.dump([json.load(open('source1.json')), json.load(open('source2.json'))], open('target.json'))
    invite
        10
    invite  
       2015-02-11 09:22:42 +08:00
    要哪种合并?有一种合并是这样的:
    两个文件a和b,内容为 A 和 B,那么合并后:

    {'a': A , 'b': B}

    多快好省,哈哈。
    leiz
        11
    leiz  
       2015-02-11 09:43:52 +08:00
    完全没有上下文的问题为什么会有这么多人回答?
    fanta
        12
    fanta  
       2015-02-11 10:04:25 +08:00
    import ast
    ast.literal_eval(json)
    wico77
        13
    wico77  
    OP
       2015-02-11 17:13:46 +08:00
    @Septembers 这个就是我想要的。谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2696 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:11 · PVG 23:11 · LAX 07:11 · JFK 10:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.