Hướng dẫn python remove json element from file - python xóa phần tử json khỏi tệp

0

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 không chắc tệp JSON của tôi có duy nhất không nhưng tôi không thể tìm thấy bất kỳ câu hỏi/câu trả lời nào khác.

Tệp JSON của tôi trông giống như:

{"UserID": "name1", "Timestamp": "1234"}
{"UserID": "name2", "Timestamp": "4321"}
{"UserID": "name3", "Timestamp": "1234"}

Có cách nào để Python xóa toàn bộ dòng khỏi tệp không?

Đây là những gì tôi đã làm cho đến nay:

open_file = open["times.json", 'r']
line = open_file.readline[]

while line:
    jsonLine = json.loads[line]

    if line['Timestamp'] == '1234':
        del line

open_file.close[]

Nếu dấu thời gian là 1234, tôi muốn nó xóa toàn bộ đối tượng để tệp sẽ trông như thế này:

{"UserID": "name2", "Timestamp": "4321"}

Thanks!

Hỏi ngày 10 tháng 1 năm 2019 lúc 19:44Jan 10, 2019 at 19:44

Chakolatemilkchakolatemilkchakolatemilk

8038 Huy hiệu vàng19 Huy hiệu bạc31 Huy hiệu Đồng8 gold badges19 silver badges31 bronze badges

3

Kết hợp cả hai đề xuất của Jonrsharpe và Ajon, thay vì xóa nó trong khi đọc, đọc nó vào bộ nhớ và sau đó viết lại.

Tuy nhiên, bạn có thể có thời gian dễ dàng hơn để đọc các json trước và sau đó loại bỏ các dòng với các phần tử phù hợp, thay vì thao tác trực tiếp văn bản:

json_lines = []
with open["times.json", 'r'] as open_file:
    for line in open_file.readlines[]:
        j = json.loads[line]
        if not j['Timestamp'] == '1234':
            json_lines.append[line]

with open["times.json", 'w'] as open_file:
    open_file.writelines['\n'.join[json_lines]]

Phương pháp này cung cấp cho bạn tính linh hoạt có điều kiện hơn trên nhiều khóa/giá trị nếu cần thiết thay vì tìm kiếm cụ thể cho "TimeStamp": "1234" trong dòng.

Đã trả lời ngày 10 tháng 1 năm 2019 lúc 20:12Jan 10, 2019 at 20:12

5

Theo đề xuất của @jonrsharpe, bạn có thể đọc trong tệp. Làm bất cứ điều gì mà bạn muốn. Sau đó viết lại tệp.

Đây là một ví dụ:

test.out:

test file
#test comment
testfile

Mã Python:

content = ''
with open['test.out', 'r'] as f:
  for line in f:
    if line.startswith['#']: continue # don't copy comment lines
    content += line

with open['test.out', 'w'] as f:
  f.write[content]

test.out sau:

test file
testfile

Đã trả lời ngày 10 tháng 1 năm 2019 lúc 19:57Jan 10, 2019 at 19:57

Ajonajonajon

7.59011 Huy hiệu vàng47 Huy hiệu bạc85 Huy hiệu Đồng11 gold badges47 silver badges85 bronze badges

Đọc toàn bộ tệp vào bộ nhớ có thể dẫn đến các rắc rối với các tệp lớn. Bạn có thể muốn ghi vào một tệp tạm thời và sau đó ghi đè tệp cũ bằng tệp mới. Có một bản dựng trong Thư viện Python cho điều đó: //docs.python.org/3/l Library/tempfile.html

Nếu bạn chắc chắn, tệp của bạn không lớn, bạn không cần read_line bạn có thể trực tiếp sử dụng json.load[].

Đã trả lời ngày 10 tháng 1 năm 2019 lúc 21:57Jan 10, 2019 at 21:57

1

Cách tôi xử lý chỉnh sửa, xóa và thêm các câu hỏi đố trong tệp JSON cho bài kiểm tra đơn giản của tôi được viết bằng Python

Như bạn nhớ trong bài viết trước của tôi, tôi đã đăng một bài kiểm tra kiểm tra bạn bè và tình bạn của chúng tôi bằng cách sử dụng chương trình tôi đã thực hiện ở Python. Lần này, tôi cần sửa đổi toàn bộ bài kiểm tra để phù hợp với các yêu cầu như được đưa ra bởi người hướng dẫn của chúng tôi.

Đối với bài viết này, tôi sẽ chủ yếu thảo luận về cách tôi thực sự xử lý việc chỉnh sửa, xóa và thêm các câu hỏi trong chương trình của mình. Tôi đã sử dụng JSON làm cơ sở dữ liệu của tôi. Tôi chỉ đơn giản muốn thử thách bản thân trong việc sử dụng một định dạng mà tôi chưa từng sử dụng trước đây và có được một số kinh nghiệm mới.

Bạn có thể kiểm tra toàn bộ mã ở đây.

Đối với dự án này, tôi liệt kê các mục tiêu của mình cho cơ sở dữ liệu JSON của mình hoặc phải có trước khi tôi thực sự bắt đầu mã hóa. Chúng được viết dưới đây:

  1. Phải có khả năng tạo, đọc và ghi trên tệp JSON. Một ô trong colab để xử lý mã đọc và ghi cho tệp JSON.
  2. Một ô khác chứa các chức năng xóa, chỉnh sửa và thêm các câu hỏi.

Hãy để mã mã

Quyết định nội dung dữ liệu của tôi

Trong ô này, tôi đã quyết định cấu trúc của tệp JSON của mình. Như bạn có thể thấy, một tệp JSON có điểm tương đồng với một từ điển bên trong một mảng. Ở đây, tôi có một câu hỏi, A, B, C, và trả lời làm chìa khóa của tôi.

Tôi sẽ để lại lời giải thích của tập tin JSON cho các chuyên gia. Bạn có thể đọc về nó ở đây.

Tạo và đọc tệp JSON

Trong hình trên, tôi đang tạo tệp JSON bằng mô -đun JSON. Vào thứ hai, giờ đây, giờ đây tôi đang đọc tệp JSON mà tôi đã tạo. Sau đó, tôi đã tạo một tập lệnh đơn giản cho vòng lặp chỉ để kiểm tra xem nội dung có đúng trong tệp tôi đã tạo không.

Thêm một chức năng câu hỏi mới

Hình ảnh trên cho thấy chức năng tôi tạo để xử lý việc bổ sung câu hỏi mới. Phương pháp eval [] được sử dụng để chuyển đổi chuỗi được định dạng mà tôi đã tạo thành một từ điển. Thành thật mà nói, tôi nghĩ rằng cái này cần phải được cải thiện về cách tôi chuyển đổi đầu vào người dùng của mình thành một từ điển mà sau đó tôi có thể nối vào chuỗi JSON của mình.

Chọn chức năng câu hỏi

Hàm này chỉ xử lý việc lựa chọn một câu hỏi cụ thể trong chuỗi JSON. Tôi đã tạo chức năng này vì tôi nhận ra chức năng chỉnh sửa và xóa tôi cần chọn một câu hỏi. Thay vì lặp lại mã bên trong chức năng chỉnh sửa và xóa, tôi chỉ có thể tạo một hàm để được sử dụng lại bởi hai hàm. Chức năng này khiến tôi yêu thích cách sử dụng tuyệt vời trong việc tạo ra các chức năng cho những thứ bạn có thể sử dụng nhiều lần.

Như bạn có thể thấy ở trên, tôi đã thêm một câu lệnh IF và một câu lệnh Expet-Except. Họ sẽ xử lý lỗi mà tôi có thể gặp phải nếu người dùng nhập số ít hơn -1 và nếu người dùng nhập một số nhiều hơn độ dài của chuỗi JSON. Theo cách này, chương trình vẫn sẽ thực thi thay vì chấm dứt hoàn toàn. if statement and a try-except statement. They will be handling the error I might encounter if the user entered a number less than -1 and if the user entered a number that is more than the length of the JSON string. In this way, the program will still execute instead of terminate entirely.

Chỉnh sửa chức năng câu hỏi

Hàm này xử lý việc chỉnh sửa một câu hỏi chỉ trong trường hợp. Tôi đã sử dụng câu lệnh IF-ELIF-OLSE cho chức năng này. Tôi đang nghĩ về một phương pháp khác để sử dụng sẽ tốt hơn nhưng bây giờ đây là những gì chúng ta có hoạt động.

Xóa chức năng

Chức năng này chỉ đơn giản là một điều và đó là xóa toàn bộ câu hỏi trong tệp JSON. Nó sẽ xóa bao gồm các lựa chọn và câu trả lời.

Bạn có thể tự hỏi tại sao trong mọi chức năng tôi có ở trên, nó luôn kết thúc việc gọi hàm game_on []. Lý do là sau khi mỗi lần thực hiện chức năng ở trên, tôi muốn nó trở lại chức năng chính thực thi toàn bộ trò chơi là hàm game_on [].game_on[] function. The reason is after every execution of the function above, I want it to return to the main function executing the whole game which is the game_on[] function.

Tôi đã học được rất nhiều từ bài tập đố vui này và thực sự phát hiện ra các chức năng tạo hữu ích như thế nào trong một dự án vì bạn có thể sử dụng lại chúng nhiều lần. Tôi vẫn cần phải làm việc trên một số điều chỉnh cho dự án này. Có thể điều chỉnh một số mã để làm cho nó hiệu quả hơn. Dù sao, điều này kết thúc bài viết của tôi. Lần sau nhé!

Làm thế nào để bạn xóa một phần tử khỏi tệp JSON?

Để xóa phần tử JSON, hãy sử dụng từ khóa xóa trong JavaScript.use the delete keyword in JavaScript.

Làm cách nào để loại bỏ một mục khỏi mảng JSON trong Python?

Bạn có thể sử dụng phương thức pop [] để loại bỏ một phần tử khỏi mảng.use the pop[] method to remove an element from the array.

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

Xóa khóa: Các cặp giá trị bằng pop [] ...
Chìa khóa là chìa khóa cần gỡ bỏ ..
Không chỉ định rằng nếu tìm thấy khóa, thì hãy xóa nó.Khác, không làm gì cả ..
Chúng tôi cũng có thể chỉ định một thông báo tùy chỉnh thay cho 'Không có' cho các trường hợp không tìm thấy khóa ..

Làm thế nào để bạn xóa một cặp giá trị khóa khỏi đối tượng JSON?

Để xóa khóa và giá trị đối tượng JSON bằng JavaScript, chúng tôi sử dụng toán tử xóa.use the delete operator.

Bài Viết Liên Quan

Chủ Đề