Hướng dẫn how do i read multiple json files in python? - làm cách nào để đọc nhiều tệp json trong python?

Một tùy chọn là liệt kê tất cả các tệp trong một thư mục với Os.ListDir và sau đó chỉ tìm thấy các tệp kết thúc trong '.json':

import os, json
import pandas as pd

path_to_json = 'somedir/'
json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]
print(json_files)  # for me this prints ['foo.json']

Bây giờ bạn có thể sử dụng gấu trúc dataframe.from_dict để đọc trong JSON (từ điển Python tại thời điểm này) đến DataFrame của Pandas:

montreal_json = pd.DataFrame.from_dict(many_jsons[0])
print montreal_json['features'][0]['geometry']

Prints:

{u'type': u'Point', u'coordinates': [-73.6051013, 45.5115944]}

Trong trường hợp này, tôi đã thêm một số Jsons vào danh sách many_jsons. JSON đầu tiên trong danh sách của tôi thực sự là một Geojson với một số dữ liệu GEO trên Montreal. Tôi đã quen thuộc với nội dung rồi nên tôi in ra 'hình học' mang lại cho tôi Lon/Lat của Montreal.

Mã sau đây tổng hợp mọi thứ ở trên:

import os, json
import pandas as pd

# this finds our json files
path_to_json = 'json/'
json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]

# here I define my pandas Dataframe with the columns I want to get from the json
jsons_data = pd.DataFrame(columns=['country', 'city', 'long/lat'])

# we need both the json and an index number so use enumerate()
for index, js in enumerate(json_files):
    with open(os.path.join(path_to_json, js)) as json_file:
        json_text = json.load(json_file)

        # here you need to know the layout of your json and each json has to have
        # the same structure (obviously not the structure I have here)
        country = json_text['features'][0]['properties']['country']
        city = json_text['features'][0]['properties']['name']
        lonlat = json_text['features'][0]['geometry']['coordinates']
        # here I push a list of data into a pandas DataFrame at row given by 'index'
        jsons_data.loc[index] = [country, city, lonlat]

# now that we have the pertinent json data in our DataFrame let's look at it
print(jsons_data)

Đối với tôi bản in này:

  country           city                   long/lat
0  Canada  Montreal city  [-73.6051013, 45.5115944]
1  Canada        Toronto  [-79.3849008, 43.6529206]

Có thể hữu ích khi biết rằng đối với mã này, tôi đã có hai Geojsons trong một tên thư mục 'JSON'. Mỗi JSON có cấu trúc sau:

{"features":
[{"properties":
{"osm_key":"boundary","extent":
[-73.9729016,45.7047897,-73.4734865,45.4100756],
"name":"Montreal city","state":"Quebec","osm_id":1634158,
"osm_type":"R","osm_value":"administrative","country":"Canada"},
"type":"Feature","geometry":
{"type":"Point","coordinates":
[-73.6051013,45.5115944]}}],
"type":"FeatureCollection"}

Bạn đang ở đây vì khi bạn cố gắng tải và phân tích tệp JSON với nhiều đối tượng JSON trong Python, bạn đã nhận được một lỗi.

montreal_json = pd.DataFrame.from_dict(many_jsons[0])
print montreal_json['features'][0]['geometry']
0. Lý do là phương thức & nbsp; json.load () chỉ có thể xử lý một đối tượng JSON duy nhất.

Tệp không hợp lệ nếu nó chứa nhiều đối tượng JSON. Khi bạn cố gắng tải và phân tích tệp JSON với nhiều đối tượng JSON, mỗi dòng chứa JSON hợp lệ, nhưng nói chung, nó không phải là JSON hợp lệ vì không có danh sách cấp cao hoặc định nghĩa đối tượng. Chúng ta chỉ có thể gọi JSON là JSON hợp lệ khi có danh sách cấp cao nhất hoặc định nghĩa đối tượng.

Ví dụ: bạn muốn đọc tệp JSON sau đây, lọc một số dữ liệu và lưu trữ nó vào tệp JSON mới.

{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}

Nếu tệp của bạn chứa một danh sách các đối tượng JSON và bạn muốn giải mã một đối tượng một-một lần, chúng tôi có thể làm điều đó. Để tải và phân tích tệp JSON với nhiều đối tượng JSON, chúng ta cần tuân theo các bước dưới đây:Load and parse a JSON file with multiple JSON objects we need to follow below steps:

  • Tạo một danh sách trống có tên
    montreal_json = pd.DataFrame.from_dict(many_jsons[0])
    print montreal_json['features'][0]['geometry']
    
    1
  • Đọc từng dòng tệp vì mỗi dòng chứa JSON hợp lệ. tức là, đọc một đối tượng JSON tại một thời điểm.
  • Chuyển đổi từng đối tượng JSON thành Python
    montreal_json = pd.DataFrame.from_dict(many_jsons[0])
    print montreal_json['features'][0]['geometry']
    
    2 bằng cách sử dụng
    montreal_json = pd.DataFrame.from_dict(many_jsons[0])
    print montreal_json['features'][0]['geometry']
    
    3
  • Lưu từ điển này vào một danh sách có tên là respress jsonlist.

Hãy để xem ví dụ bây giờ.

import json

studentsList = []
print("Started Reading JSON file which contains multiple JSON document")
with open('students.txt') as f:
    for jsonObj in f:
        studentDict = json.loads(jsonObj)
        studentsList.append(studentDict)

print("Printing each JSON Decoded Object")
for student in studentsList:
    print(student["id"], student["name"], student["class"], student["email"])

Output::

Started Reading JSON file which contains multiple JSON document
Printing each JSON Decoded Object
1 Ault 8 
2 john 8 
3 josh 8 
4 emma 8 

Vậy bạn nghĩ như thế nào?

Tôi muốn nghe từ bạn. Bạn nghĩ gì về bài viết này? Hoặc có thể tôi đã bỏ lỡ một trong những cách để phân tích nhiều đối tượng JSON từ một tệp, dù bằng cách nào, hãy cho tôi biết bằng cách để lại một bình luận bên dưới.leaving a comment below.

Ngoài ra, hãy cố gắng giải bài tập Python JSON để hiểu rõ hơn về việc làm việc với dữ liệu JSON trong Python.

Bài tập và câu đố Python

Các bài tập mã hóa miễn phí và các câu đố bao gồm các vấn đề cơ bản của Python, cấu trúc dữ liệu, phân tích dữ liệu, v.v.

  • Hơn 15 bài tập và câu đố dành riêng cho chủ đềTopic-specific Exercises and Quizzes
  • Mỗi bài tập chứa 10 câu hỏi
  • Mỗi bài kiểm tra chứa 12-15 mcq

Làm cách nào để xem nhiều tệp JSON trong Python?

Để tải và phân tích tệp JSON với nhiều đối tượng JSON, chúng ta cần tuân theo các bước dưới đây:..
Tạo một danh sách trống có tên JsonList ..
Đọc từng dòng tệp vì mỗi dòng chứa JSON hợp lệ. ....
Chuyển đổi từng đối tượng JSON thành Python dict bằng cách sử dụng JSON. ....
Lưu từ điển này vào một danh sách có tên là result jsonlist ..

Làm thế nào để bạn đọc một mảng các đối tượng JSON trong Python?

Làm thế nào để bạn đọc một mảng các đối tượng JSON từ tệp JSON trong Python ?..
data.json {"a": 21, "b": 42, "c": 73}.
Chương trình python nhập json fileObject = open ("data.json", "r") jsonContent = fileObject.read () alist = json.loads (jsonContent) print (alist) in (alist ['a'])'b']) in (alist ['c']).

Làm cách nào để đọc nhiều tệp trong một thư mục trong Python?

Làm cách nào để đọc nhiều tệp từ một thư mục trong Python ?..
Nhập mô -đun ..
Thêm đường dẫn của thư mục ..
Thay đổi thư mục ..
Nhận danh sách một tệp từ một thư mục ..
Lặp lại thông qua danh sách tệp và kiểm tra xem phần mở rộng của tệp có ở hay không.Định dạng TXT hay không ..
Nếu tệp văn bản tồn tại, hãy đọc tệp bằng cách xử lý tệp ..

Làm cách nào để đọc tệp JSON trong Python?

JSON.LOADS (): Nếu bạn có chuỗi JSON, bạn có thể phân tích nó bằng cách sử dụng json.loads () method.json.loads () không lấy đường dẫn tệp, mà là nội dung tệp làm chuỗi, sử dụng FileObject.Đọc () với json.loads () chúng ta có thể trả về nội dung của tệp.If you have a JSON string, you can parse it by using the json.loads() method.json.loads() does not take the file path, but the file contents as a string, using fileobject.read() with json.loads() we can return the content of the file.