Hướng dẫn python remove json object from list - python xóa đối tượng json khỏi danh sách

14

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang sử dụng Python để xóa và cập nhật tệp JSON được tạo từ dữ liệu do người dùng cung cấp, để chỉ có một vài mục được lưu trữ trong cơ sở dữ liệu. Tôi muốn xóa một đối tượng cụ thể khỏi tệp JSON.

Tệp JSON của tôi là:

[
  {
      "ename": "mark",
      "url": "Lennon.com"
  },
  {
      "ename": "egg",
      "url": "Lennon.com"
  }
]

Tôi muốn xóa đối tượng JSON bằng ename mark.

Khi tôi chưa quen với Python, tôi đã cố gắng xóa nó bằng cách chuyển đổi các đối tượng thành Dict nhưng nó không hoạt động. CÒn cách nào khác để thực hiện việc này không? Tôi đã thử cái này:

index=0
while index < len(data):
    next=index+1
    if(data[index]['ename']==data[next]['ename']):
        print "match found at"
        print "line %d and %d" %(next,next+1)
        del data[next]
    index +=1

Đã hỏi ngày 5 tháng 10 năm 2013 lúc 18:28Oct 5, 2013 at 18:28

Hướng dẫn python remove json object from list - python xóa đối tượng json khỏi danh sách

argleargleearglee

1.3344 Huy hiệu vàng17 Huy hiệu bạc 30 Huy hiệu Đồng4 gold badges17 silver badges30 bronze badges

3

Dưới đây là một ví dụ đầy đủ để tải tệp JSON, xóa đối tượng đích và sau đó xuất đối tượng JSON được cập nhật vào tệp.

#!/usr/bin/python                                                               

# Load the JSON module and use it to load your JSON file.                       
# I'm assuming that the JSON file contains a list of objects.                   
import json
obj  = json.load(open("file.json"))

# Iterate through the objects in the JSON and pop (remove)                      
# the obj once we find it.                                                      
for i in xrange(len(obj)):
    if obj[i]["ename"] == "mark":
        obj.pop(i)
        break

# Output the updated file with pretty JSON                                      
open("updated-file.json", "w").write(
    json.dumps(obj, sort_keys=True, indent=4, separators=(',', ': '))
)

Điểm chính là chúng tôi tìm thấy đối tượng bằng cách lặp qua các đối tượng trong danh sách được tải, và sau đó bật đối tượng ra khỏi danh sách khi chúng tôi tìm thấy nó. Nếu bạn cần xóa nhiều hơn một đối tượng trong danh sách, thì bạn nên lưu trữ các chỉ số của các đối tượng bạn muốn xóa, sau đó xóa tất cả chúng cùng một lúc khi bạn đến cuối vòng lặp for (bạn không muốn sửa đổi danh sách trong khi bạn lặp lại thông qua nó).

Đã trả lời ngày 5 tháng 10 năm 2013 lúc 21:07Oct 5, 2013 at 21:07

mdmlmdmlmdml

21.7K8 Huy hiệu vàng56 Huy hiệu bạc64 Huy hiệu Đồng8 gold badges56 silver badges64 bronze badges

5

Cách thích hợp để JSON là giảm dần nó, sửa đổi các đối tượng được tạo, và sau đó, nếu cần, tuần tự hóa chúng trở lại JSON. Để làm như vậy, sử dụng mô -đun JSON. Nói tóm lại, sử dụng <deserialized object> = json.loads(<some json string>) để đọc JSON và

index=0
while index < len(data):
    next=index+1
    if(data[index]['ename']==data[next]['ename']):
        print "match found at"
        print "line %d and %d" %(next,next+1)
        del data[next]
    index +=1
0 để tạo chuỗi JSON. Trong ví dụ của bạn, điều này sẽ là:

import json
o = json.loads("""[
    {
        "ename": "mark",
        "url": "Lennon.com"
    },
    {
        "ename": "egg",
        "url": "Lennon.com"
    }
]""")
# kick out the unwanted item from the list
o = filter(lambda x: x['ename']!="mark", o)
output_string = json.dumps(o)

Đã trả lời ngày 5 tháng 10 năm 2013 lúc 21:34Oct 5, 2013 at 21:34

LeuxleuxLeuX

1384 Huy hiệu đồng4 bronze badges

0

Tệp JSON của bạn chứa trong một danh sách các đối tượng, là từ điển trong Python. Chỉ cần thay thế danh sách bằng một danh sách mới không có đối tượng trong đó:

import json

with open('testdata.json', 'rb') as fp:
    jsondata = json.load(fp)

jsondata = [obj for obj in jsondata if obj['ename'] != 'mark']

print(json.dumps(jsondata, indent=4))

Đã trả lời ngày 5 tháng 10 năm 2013 lúc 21:15Oct 5, 2013 at 21:15

Hướng dẫn python remove json object from list - python xóa đối tượng json khỏi danh sách

Martineaumartineaumartineau

Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges

Bạn cần sử dụng mô -đun

index=0
while index < len(data):
    next=index+1
    if(data[index]['ename']==data[next]['ename']):
        print "match found at"
        print "line %d and %d" %(next,next+1)
        del data[next]
    index +=1
1. Tôi đang giả sử Python2. Thử cái này:

import json
json_data = json.loads('<json_string>')

for i in xrange(len(json_data)):
  if(json_data[i]["id"] == "mark"):
    del json_data[i]
    break

Đã trả lời ngày 5 tháng 10 năm 2013 lúc 18:34Oct 5, 2013 at 18:34

NikhilnikhilNikhil

2.28013 Huy hiệu bạc14 Huy hiệu đồng13 silver badges14 bronze badges

5

Làm cách nào để loại bỏ một khóa khỏi đối tượng JSON trong Python?

Làm thế nào để bạn xóa một cặp giá trị khóa khỏi đối tượng JSON? JSONObject :: Remove () Xóa một cặp giá trị khóa khỏi đối tượng được trỏ bởi JSONObject. Nếu jsonObject là null, chức năng này không làm gì cả.JsonObject::remove() removes a key-value pair from the object pointed by the JsonObject . If the JsonObject is null, this function does nothing.

Làm cách nào để làm trống một tập tin JSON trong Python?

Làm thế nào để bạn tạo một đối tượng JSON trống?..
Đó là biến JsonObject. ....
sau đó chi tiếtjson = new jsonObject () sẽ xóa tất cả dữ liệu trước đó của bạn và sẽ đặt và trống chi tiết đối tượng cho bạn. ....
Chi tiết

Làm cách nào để loại bỏ dấu gạch chéo ngược khỏi phản hồi JSON trong Python?

Sử dụng hàm thay thế () cùng với hàm json.loads () để xóa dấu gạch chéo ngược khỏi chuỗi JSON trong python. Loads() Function to Remove Backslash from Json String in Python.

Tải trọng JSON trong Python là gì?

Phương thức tải () có thể được sử dụng để phân tích chuỗi JSON hợp lệ và chuyển đổi nó thành từ điển Python.Nó chủ yếu được sử dụng để giải phóng chuỗi tự nhiên, byte hoặc mảng byte bao gồm dữ liệu JSON vào từ điển Python.Cú pháp: json.loads (s)used to parse a valid JSON string and convert it into a Python Dictionary. It is mainly used for deserializing native string, byte, or byte array which consists of JSON data into Python Dictionary. Syntax : json.loads(s)