Hướng dẫn how do i remove a character from a json file in python? - làm cách nào để xóa một ký tự khỏi tệp json trong python?

Tôi có một tệp JSON trong đó một khóa là một danh sách nhưng nó có hai phần trước trước khung vuông và tệp khác ở cuối khung vuông. Về cơ bản, nó làm cho danh sách một chuỗi. Tôi muốn viết một chương trình có thể xóa các trích dẫn kép cụ thể đó để tôi có thể sử dụng nó làm danh sách. Dưới đây là một ví dụ về tệp JSON đó.

{ "attempts":[{ "image_dump":"[ {"x":247,"y":16}, {"x":248,"y":16} ]" }] }

Tôi cần xóa các trích dẫn kép cho giá trị của khóa 'Image_Dump'. Để tôi có thể sử dụng danh sách đó. Tôi đã thử sử dụng phương thức thay thế () nhưng nó thay thế mỗi trích dẫn kép. Làm cách nào để làm điều đó bằng cách sử dụng Python?

Đã hỏi ngày 10 tháng 5 năm 2020 lúc 11:19May 10, 2020 at 11:19

2

Bạn có thể thay thế sự kết hợp cụ thể của "Trích dẫn sau bằng khung" chỉ bằng một giá đỡ bằng cách sử dụng biểu thức chính quy (xem //docs.python.org/3/l Library/re.html). Giả sử bạn đã nhập văn bản vào sample

import re # Replace text combination of `"[` with `[` sample = re.sub("\"\[", "[", sample) # Replace text combination of `]"` with `]` sample = re.sub("\]\"", "]", sample) # Try to read json text json.loads(sample)

Trin

5.0792 Huy hiệu vàng18 Huy hiệu bạc39 Huy hiệu đồng2 gold badges18 silver badges39 bronze badges

Đã trả lời ngày 10 tháng 5 năm 2020 lúc 11:42May 10, 2020 at 11:42

Xóa đối tượng JSON khỏi danh sách trong Python #

Để xóa đối tượng JSON khỏi danh sách:

  1. Phân tích đối tượng JSON vào một danh sách python từ điển.
  2. Sử dụng chức năng enumerate() để lặp qua lần lặp qua danh sách.
  3. Kiểm tra xem mỗi từ điển có phải là loại bạn muốn xóa và sử dụng phương thức pop() để loại bỏ dicting phù hợp không.

Copied!

import json file_name = 'example.json' with open(file_name, 'r', encoding='utf-8') as f: my_list = json.load(f) # 👇️ [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Carl'}] print(my_list) for idx, obj in enumerate(my_list): if obj['id'] == 2: my_list.pop(idx) new_file_name = 'new-file.json' with open(new_file_name, 'w', encoding='utf-8') as f: f.write(json.dumps(my_list, indent=2))

Ví dụ cho thấy cách xóa đối tượng JSON khỏi một mảng các đối tượng trong một tệp.

Bạn có thể sử dụng cùng một cách tiếp cận để xóa một đối tượng JSON khỏi một mảng các đối tượng bên ngoài tệp.

Copied!

import json my_json = '[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]' my_list = json.loads(my_json) for idx, dictionary in enumerate(my_list): if dictionary['id'] == 2: my_list.pop(idx) # 👇️ [{'id': 1, 'name': 'Alice'}] print(my_list) json_again = json.dumps(my_list) print(json_again) # 👉️ '[{"id": 1, "name": "Alice"}]'

Nếu JSON của bạn được đặt trong một tệp, hãy sử dụng phương thức import re # Replace text combination of `"[` with `[` sample = re.sub("\"\[", "[", sample) # Replace text combination of `]"` with `]` sample = re.sub("\]\"", "]", sample) # Try to read json text json.loads(sample) 0 để phân tích JSON.

Phương thức JSON.LOAD được sử dụng để giảm dần một tệp vào đối tượng Python, trong khi phương thức JSON.LOADS được sử dụng để giảm bớt chuỗi JSON thành đối tượng Python.

Bước tiếp theo là lặp lại trong danh sách và kiểm tra xem một khóa trong mỗi từ điển có một giá trị cụ thể.

Copied!

import json file_name = 'example.json' with open(file_name, 'r', encoding='utf-8') as f: my_list = json.load(f) # 👇️ [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Carl'}] print(my_list) for idx, obj in enumerate(my_list): if obj['id'] == 2: my_list.pop(idx) new_file_name = 'new-file.json' with open(new_file_name, 'w', encoding='utf-8') as f: f.write(json.dumps(my_list, indent=2))

Khi chúng tôi tìm thấy từ điển phù hợp, chúng tôi phải sử dụng phương thức import re # Replace text combination of `"[` with `[` sample = re.sub("\"\[", "[", sample) # Replace text combination of `]"` with `]` sample = re.sub("\]\"", "]", sample) # Try to read json text json.loads(sample) 1 để xóa nó khỏi danh sách.

Phương thức Danh sách.pop loại bỏ mục tại vị trí đã cho trong danh sách và trả về nó.

Bạn cũng có thể thêm câu lệnh import re # Replace text combination of `"[` with `[` sample = re.sub("\"\[", "[", sample) # Replace text combination of `]"` with `]` sample = re.sub("\]\"", "]", sample) # Try to read json text json.loads(sample) 2 nếu bạn chỉ muốn xóa từ điển import re # Replace text combination of `"[` with `[` sample = re.sub("\"\[", "[", sample) # Replace text combination of `]"` with `]` sample = re.sub("\]\"", "]", sample) # Try to read json text json.loads(sample) 3 khỏi danh sách.

Copied!

for idx, obj in enumerate(my_list): if obj['id'] == 2: my_list.pop(idx) break

Điều này giúp bạn tiết kiệm một thời gian trong các lần lặp không cần thiết nếu từ điển đến đầu danh sách.

Bước cuối cùng là mở một tệp mới (import re # Replace text combination of `"[` with `[` sample = re.sub("\"\[", "[", sample) # Replace text combination of `]"` with `]` sample = re.sub("\]\"", "]", sample) # Try to read json text json.loads(sample) 4) trong ví dụ, tuần tự hóa danh sách thành import re # Replace text combination of `"[` with `[` sample = re.sub("\"\[", "[", sample) # Replace text combination of `]"` with `]` sample = re.sub("\]\"", "]", sample) # Try to read json text json.loads(sample) 5 và viết nó vào tệp.

Copied!

new_file_name = 'new-file.json' with open(new_file_name, 'w', encoding='utf-8') as f: f.write(json.dumps(my_list, indent=2))

Chủ đề