Warum erhalte ich einen „ValueError: Extra Data', wenn ich json.loads in Python verwende?

Linda Hamilton
Freigeben: 2024-11-17 18:11:01
Original
171 Leute haben es durchsucht

Why am I getting a

Umgang mit „ValueError: Extra data“ bei der Verwendung von json.loads in Python

Problembeschreibung

Beim Lesen von Daten Wenn Sie mit json.load eine JSON-Datei importieren, kann es sein, dass der Fehler „ValueError: Extra data“ auftritt. Dies deutet darauf hin, dass die JSON-Datei über die gültigen JSON-Daten hinaus zusätzlichen nachgestellten Inhalt enthält.

Beispieldaten

Das Folgende ist ein Beispiel der Daten in der „neuen Datei“. .json“-Datei, die den Fehler verursacht:

{
    "contributors": null, 
    "truncated": false, 
    "text": "@HomeShop18 #DreamJob to professional rafter", 
    "in_reply_to_status_id": null, 
    "id": 421584490452893696, 
    "favorite_count": 0, 
    "source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Mobile Web (M2)</a>",
    "retweeted": false, 
    "coordinates": null, 
    "entities": {
        "symbols": [], 
        "user_mentions": [
            {
                "id": 183093247, 
                "indices": [
                    0, 
                    11
                ], 
                "id_str": "183093247", 
                "screen_name": "HomeShop18", 
                "name": "HomeShop18"
            }
        ], 
        "hashtags": [
            {
                "indices": [
                    12, 
                    21
                ], 
                "text": "DreamJob"
            }
        ], 
        "urls": []
    }, 
    "in_reply_to_screen_name": "HomeShop18", 
    "id_str": "421584490452893696", 
    "retweet_count": 0, 
    "in_reply_to_user_id": 183093247, 
    "favorited": false, 
    "user": {
        "follow_request_sent": null, 
        "profile_use_background_image": true, 
        "default_profile_image": false, 
        "id": 2254546045, 
        "verified": false, 
        "profile_image_url_https": "https://pbs.twimg.com/profile_images/413952088880594944/rcdr59OY_normal.jpeg", 
        "profile_sidebar_fill_color": "171106", 
        "profile_text_color": "8A7302", 
        "followers_count": 87, 
        "profile_sidebar_border_color": "BCB302", 
        "id_str": "2254546045", 
        "profile_background_color": "0F0A02", 
        "listed_count": 1, 
        "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", 
        "utc_offset": null, 
        "statuses_count": 9793, 
        "description": "Rafter. Rafting is what I do. Me aur mera Tablet.  Technocrat of Future", 
        "friends_count": 231, 
        "location": "", 
        "profile_link_color": "473623", 
        "profile_image_url": "http://pbs.twimg.com/profile_images/413952088880594944/rcdr59OY_normal.jpeg", 
        "following": null, 
        "geo_enabled": false, 
        "profile_banner_url": "https://pbs.twimg.com/profile_banners/2254546045/1388065343", 
        "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", 
        "name": "Jayy", 
        "lang": "en", 
        "profile_background_tile": false, 
        "favourites_count": 41, 
        "screen_name": "JzayyPsingh", 
        "notifications": null, 
        "url": null, 
        "created_at": "Fri Dec 20 05:46:00 +0000 2013", 
        "contributors_enabled": false, 
        "time_zone": null, 
        "protected": false, 
        "default_profile": false, 
        "is_translator": false
    }, 
    "geo": null, 
    "in_reply_to_user_id_str": "183093247", 
    "lang": "en", 
    "created_at": "Fri Jan 10 10:09:09 +0000 2014", 
    "filter_level": "medium", 
    "in_reply_to_status_id_str": null, 
    "place": null
} 
Nach dem Login kopieren

Lösung

Der Fehler tritt auf, weil json.load versucht, die gesamte Datei als einzelnes JSON-Objekt zu analysieren . Die Datei enthält jedoch mehrere Zeilen, die jeweils ein separates JSON-Objekt darstellen.

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Zeile für Zeile iterieren: Durchlaufen Sie die Datei Zeile für Zeile und laden Sie jede Zeile als JSON mit json.loads.
tweets = []
with open('new.json') as infile:
    for line in infile:
        tweets.append(json.loads(line))
Nach dem Login kopieren
  1. JSON-Objekte trennen: Auf diese Weise trennen Sie effektiv jedes JSON-Objekt in einzelne Elemente in einer Liste.

Durch die Vermeidung von Python-Zwischenobjekten und die Sicherstellung, dass nur vollständige Tweets angehängt werden, verhindert dieser Ansatz eine Überlastung des Speichers und ermöglicht Ihnen die effiziente Verarbeitung großer JSON-Dateien.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich einen „ValueError: Extra Data', wenn ich json.loads in Python verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage