Xóa ví dụ python

1. Tôi đã cố gắng sử dụng python để xóa một khóa cụ thể và giá trị của nó trong tệp JSON. Đây là cấu trúc tệp JSON

Nội dung chính Hiển thị

Nội dung chính

  • Trả lời 1
  • Câu trả lời số 2
  • Làm cách nào để xóa một trường khỏi tệp JSON?
  • Làm cách nào để xóa thuộc tính khỏi đối tượng JSON?
  • Làm cách nào để bạn chỉnh sửa một đối tượng JSON trong Python?
  • Làm cách nào để xóa cặp giá trị khóa khỏi đối tượng JSON?

Nội dung chính

  • Trả lời 1
  • Câu trả lời số 2
  • Làm cách nào để xóa một trường khỏi tệp JSON?
  • Làm cách nào để xóa thuộc tính khỏi đối tượng JSON?
  • Làm cách nào để bạn chỉnh sửa một đối tượng JSON trong Python?
  • Làm cách nào để xóa cặp giá trị khóa khỏi đối tượng JSON?
[
  {
    "_id": {
      "$oid": "6066af7bcb0716461578fa70"
    },
    "FileName": "copy_of_ex_fts.csv",
    "BriefInfo": "",
    "Size": "13.532KB",
    "UserName": "12795757"
    "data":"123"
  }
]

Tôi đã viết một số mã để xóa khóa "dữ liệu" và "Tên người dùng" cùng với các giá trị của chúng nhưng tôi chỉ có thể xóa dữ liệu và giá trị của nó không dành cho "Tên người dùng". Ai đó có thể cho tôi một số gợi ý để sửa lỗi này không?

2. Đây là mã để thực hiện. Đầu tiên chỉ cần mở tệp JSON và tải dữ liệu. Sau đó, để kiểm tra xem khóa "dữ liệu" và "Tên người dùng" có trong đó hay không. Nếu có, hãy xóa các khóa này và giá trị của chúng

jsonFile = open['./dataNewJson.json', 'r']
    values = json.load[jsonFile]
    for element in values:
        if 'data' in element:
            del element['data']
            print["check"]
        elif 'BriefInfo' in element:
            del element['BriefInfo']
        elif 'UserName' in element:
            print["SSS"]
            del element['UserName']
    values = dumps[values, indent = 2]

Câu hỏi

Xóa một phần tử trong đối tượng JSON

Tôi đang cố lặp qua danh sách các đối tượng xóa một phần tử khỏi mỗi đối tượng. Mỗi đối tượng là một dòng mới. Tôi đang cố gắng lưu tệp mới mà không có phần tử chứa trong các đối tượng. Tôi biết đây có thể là một nhiệm vụ đơn giản nhưng dường như tôi không thể hoàn thành công việc này. Sẽ rất biết ơn nếu ai đó có thể giúp một tay. Cảm ơn

{
"business_id": "fNGIbpazjTRdXgwRY_NIXA",
"full_address": "1201 Washington AvenCarnegie, PA 15106",
"hours": {
    "Monday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Tuesday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Friday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Wednesday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Thursday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Saturday": {
        "close": "23:00",
        "open": "11:00"
    }
},
"open": true,
"categories": ["Bars", "American [Traditional]", "Nightlife", "Lounges", "Restaurants"],
"city": "Carnegie",
"review_count": 7,
"name": "Rocky's Lounge",
"neighborhoods": [],
"longitude": -80.0849416,
"state": "PA",
"stars": 4.0,
"latitude": 40.3964688,
"attributes": {
    "Alcohol": "full_bar",
    "Noise Level": "average",
    "Music": {
        "dj": false
    },
    "Attire": "casual",
    "Ambience": {
        "romantic": false,
        "intimate": false,
        "touristy": false,
        "hipster": false,
        "divey": false,
        "classy": false,
        "trendy": false,
        "upscale": false,
        "casual": false
    },
    "Good for Kids": true,
    "Wheelchair Accessible": true,
    "Good For Dancing": false,
    "Delivery": false,
    "Dogs Allowed": false,
    "Coat Check": false,
    "Smoking": "no",
    "Accepts Credit Cards": true,
    "Take-out": true,
    "Price Range": 1,
    "Outdoor Seating": false,
    "Takes Reservations": false,
    "Waiter Service": true,
    "Wi-Fi": "free",
    "Caters": false,
    "Good For": {
        "dessert": false,
        "latenight": false,
        "lunch": false,
        "dinner": false,
        "brunch": false,
        "breakfast": false
    },
    "Parking": {
        "garage": false,
        "street": false,
        "validated": false,
        "lot": true,
        "valet": false
    },
    "Has TV": true,
    "Good For Groups": true
},
"type": "business"

}

Tôi cần xóa thông tin có trong phần tử giờ tuy nhiên thông tin không phải lúc nào cũng giống nhau. Một số chứa tất cả các ngày và một số chỉ chứa thông tin một hoặc hai ngày. Mã tôi đã thử sử dụng là Python mà tôi đã tìm kiếm suốt cả ngày để sử dụng cho sự cố của mình. Tôi không thành thạo lắm với Python. Bất kỳ trợ giúp sẽ được đánh giá cao

import json

with open['data.json'] as data_file:
data = json.load[data_file]
for element in data: 
        del element['hours']

Xin lỗi chỉ để thêm lỗi mà tôi gặp phải khi chạy mã là
TypeError. đối tượng ‘unicode’ không hỗ trợ xóa mục

Trả lời 1

Giả sử bạn muốn ghi đè lên cùng một tệp

import json

with open['data.json', 'r'] as data_file:
    data = json.load[data_file]

for element in data:
    element.pop['hours', None]

with open['data.json', 'w'] as data_file:
    data = json.dump[data, data_file]

jsonFile = open['./dataNewJson.json', 'r']
    values = json.load[jsonFile]
    for element in values:
        if 'data' in element:
            del element['data']
            print["check"]
        elif 'BriefInfo' in element:
            del element['BriefInfo']
        elif 'UserName' in element:
            print["SSS"]
            del element['UserName']
    values = dumps[values, indent = 2]
0 có lẽ là thứ bạn đang tìm kiếm, nếu tôi hiểu yêu cầu của bạn. Bởi vì nó sẽ xóa khóa
jsonFile = open['./dataNewJson.json', 'r']
    values = json.load[jsonFile]
    for element in values:
        if 'data' in element:
            del element['data']
            print["check"]
        elif 'BriefInfo' in element:
            del element['BriefInfo']
        elif 'UserName' in element:
            print["SSS"]
            del element['UserName']
    values = dumps[values, indent = 2]
1 nếu có và sẽ không lỗi nếu không có

Tuy nhiên, tôi không chắc là mình hiểu tại sao điều đó lại tạo ra sự khác biệt đối với bạn cho dù khóa giờ có chứa một số ngày hay không, bởi vì bạn chỉ muốn loại bỏ toàn bộ cặp khóa/giá trị, phải không?

Bây giờ, nếu bạn thực sự muốn sử dụng

jsonFile = open['./dataNewJson.json', 'r']
    values = json.load[jsonFile]
    for element in values:
        if 'data' in element:
            del element['data']
            print["check"]
        elif 'BriefInfo' in element:
            del element['BriefInfo']
        elif 'UserName' in element:
            print["SSS"]
            del element['UserName']
    values = dumps[values, indent = 2]
0 thay vì
jsonFile = open['./dataNewJson.json', 'r']
    values = json.load[jsonFile]
    for element in values:
        if 'data' in element:
            del element['data']
            print["check"]
        elif 'BriefInfo' in element:
            del element['BriefInfo']
        elif 'UserName' in element:
            print["SSS"]
            del element['UserName']
    values = dumps[values, indent = 2]
1, đây là cách bạn có thể làm cho mã của mình hoạt động

import json

with open['data.json'] as data_file:
    data = json.load[data_file]

for element in data:
    if 'hours' in element:
        del element['hours']

with open['data.json', 'w'] as data_file:
    data = json.dump[data, data_file]

CHỈNH SỬA
Vì vậy, như bạn có thể thấy, tôi đã thêm mã để ghi dữ liệu trở lại tệp.
Nếu bạn muốn ghi nó vào một tệp khác, chỉ cần thay đổi tên tệp trong câu lệnh mở thứ hai.

Tôi đã phải thay đổi thụt lề, như bạn có thể nhận thấy, để tệp đã được đóng trong giai đoạn dọn dẹp dữ liệu và có thể được ghi đè ở cuối

jsonFile = open['./dataNewJson.json', 'r']
    values = json.load[jsonFile]
    for element in values:
        if 'data' in element:
            del element['data']
            print["check"]
        elif 'BriefInfo' in element:
            del element['BriefInfo']
        elif 'UserName' in element:
            print["SSS"]
            del element['UserName']
    values = dumps[values, indent = 2]
2 là cái được gọi là trình quản lý ngữ cảnh, bất cứ thứ gì nó cung cấp [ở đây là bộ mô tả tệp data_file] CHỈ khả dụng trong ngữ cảnh đó. Điều đó có nghĩa là ngay khi việc thụt đầu dòng của khối
jsonFile = open['./dataNewJson.json', 'r']
    values = json.load[jsonFile]
    for element in values:
        if 'data' in element:
            del element['data']
            print["check"]
        elif 'BriefInfo' in element:
            del element['BriefInfo']
        elif 'UserName' in element:
            print["SSS"]
            del element['UserName']
    values = dumps[values, indent = 2]
2 kết thúc, tệp sẽ bị đóng và ngữ cảnh kết thúc, cùng với bộ mô tả tệp trở nên không hợp lệ/lỗi thời

Nếu không làm điều này, bạn sẽ không thể mở tệp ở chế độ ghi và nhận bộ mô tả tệp mới để ghi vào

Chủ Đề