繁体   English   中英

如何组合这 2 个类似 json 的文件?

[英]How to combine these 2 json-like files?

我有以下内容的 file1.txt;

[
  {
    "SERIAL": "124584",
    "X": "30024.1",
  },
  {
    "SERIAL": "114025",
    "X": "14006.2",
  }
]

我有以下内容的file2.txt;

[
  {
    "SERIAL": "344588",
    "X": "48024.1",
  },
  {
    "SERIAL": "255488",
    "X": "56006.2",
  }
]

我想将这两个文件合并成一个文件output.txt ,看起来像这样;

[
  {
    "SERIAL": "124584",
    "X": "30024.1",
  },
  {
    "SERIAL": "114025",
    "X": "14006.2",
  },
  {
    "SERIAL": "344588",
    "X": "48024.1",
  },
  {
    "SERIAL": "255488",
    "X": "56006.2",
  },  
]

棘手的部分是每个文件末尾的 []。

我正在使用 python v3.7

首先要符合 JSON,您可以删除所有尾随逗号(参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas

然后您可以使用以下代码:

import json

with open("file1.txt") as f1:
   d1 = json.load(f1)

with open("file2.txt") as f2:
   d2 = json.load(f2)

d3 = d1 + d2
with open("output.txt", "w") as out:
   json.dump(d3, out)

这是从文件中读取内容然后 append 的解决方案。

from ast import literal_eval

with open("/home/umesh/Documents/text1.txt", "r") as data
   first_file_data = data.read()

with open("/home/umesh/Documents/text2.txt", "r") as data:
   second_file_data = data.read()

first_file_data = literal_eval(first_file_data)
second_file_data = literal_eval(second_file_data)

for item in second_file_data:
  first_file_data.append(item)

print(first_file_data)

OUTPUT

[{'SERIAL': '124584', 'X': '30024.1'},{'SERIAL': '114025', 'X': '14006.2'},{'SERIAL': '344588', 'X': '48024.1'},{'SERIAL': '255488', 'X': '56006.2'}]

文本文件内容

这解决了你的问题

import ast
import json


with open('file1.txt') as f:
   data = ast.literal_eval(f.read())


with open('file2.txt') as f:
    data2 = ast.literal_eval(f.read())

data.extend(data2)
print(data)

with open('outputfile', 'w') as fout: # write to a file
    json.dump(data, fout)

OUTPUT:

[{'SERIAL': '124584', 'X': '30024.1'}, {'SERIAL': '114025', 'X': '14006.2'}, {'SERIAL': '344588', 'X': '48024.1'}, {'SERIAL': '255488', 'X': '56006.2'}]

由于文件的两个内容都是列表,因此您可以将它们连接在一起,如下所示

file1 = [{'SERIAL': '124584', 'X': '30024.1'}, {'SERIAL': '114025', 'X': '14006.2'}]
file2 = [{'SERIAL': '344588', 'X': '48024.1'}, {'SERIAL': '255488', 'X': '56006.2'}]

totals = file1 + file2

结果

[{'SERIAL': '124584', 'X': '30024.1'},
 {'SERIAL': '114025', 'X': '14006.2'},
 {'SERIAL': '344588', 'X': '48024.1'},
 {'SERIAL': '255488', 'X': '56006.2'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM