Heim >Backend-Entwicklung >Python-Tutorial >So lesen und schreiben Sie Daten im JSON-Format in Python

So lesen und schreiben Sie Daten im JSON-Format in Python

王林
王林nach vorne
2023-04-24 08:52:141874Durchsuche

    Einführung in JSON-Formatdaten

    JSONs vollständiger Name ist „JavaScript Object Notation“, übersetzt als „JavaScript Object Notation“ oder „JavaScript Object Notation“. Textuelles, offenes Datenaustauschformat. JSON spielt eine wichtige Rolle im Bereich der Webentwicklung. Wenn Sie Ihre Talente im Bereich der Webentwicklung unter Beweis stellen möchten, müssen Sie JSON verstehen. Laienhaft ausgedrückt ist Json ein Textformat, das häufig zur Datenspeicherung verwendet wird. JSON 全称“JavaScript Object Notation”,译为“JavaScript 对象简谱”或“JavaScript 对象表示法”,是一种轻量级的、基于文本的、开放的数据交换格式。JSON 在 Web 开发领域有着举足轻重的地位,如果您想在 Web 开发领域大展身手的话,就必须了解 JSON。通俗点来说Json是一种文本格式,常用于数据存储。

    基本结构为键: 值,键仅可以为字符串,而值可以是字符串,列表,数字,或者另一些键值对

    下面这段数据很好的展示了不同形式的Json结构:

    {
        "max": 1,
        "1": {
            "user": 825882638,
            "type": "image"
            "title": "超人"
        },
        "a": [
            "芝麻开门",
            {
                "a": 2
            },
            "b"
        ],
        "c": {
            "d": 888
            "g": 888
        }
    }

    注意:所有Json文本最外层都必须有{}

    使用Python读写JSON格式数据

    接下来我们就以上面这个Json文本为样板讲解一下Json文件的解析。

    在Python当中,如果我们要解析Json文件,就必须先导入Python安装时自带的json库,即import json,之后才可以进行json操作。

    1.读取json文件

    下面的代码告诉了我们如何读入一个json文件

    with open("./new.json", "r", encoding="utf-8") as f:
        content = json.load(f)

    json.load是直接从文件读取json文本,而json.loads是读取进行了json编码的文本而非本地文件。

    上述代码即从当前目录下的"new.json"文件当中读入json数据,随后json.load方法会将读入的json文本转换成Python当中的字典存入content变量当中。而在Python中操作JSON格式数据实际上就是操作字典、列表所组成的组合数据类型。

    例如我们现在想要在上面的json文本当中提取最下面的"d"的值(代码中1号位置),可以这么操作val=content[“c”][“d”],这样就可以取到d的值,也就是333了。除此之外上例我们还可以看到[]包裹的列表,如果我们想取到其中的"a"(代码中2号位置)的值,应该这么写:val=content[“a”][1][“a”],此时val的值为2

    2.写入json文件

    with open("./new.json", "w", encoding="utf-8") as f:
        json.dump(data, f, indent=4, ensure_ascii=False)

    上述代码用于向json文件当中写入data数据,其中dump方法拥有很多参数,这里只讲上面代码中的三个,其他的请自行查阅。

    obj:即上述第一个参数,用于传入需要写入Json文件当中的数据。

    fp:即上述第二个参数,用于传入需要写入Json数据的文本指针

    indent:传入Json文件换行缩进量,一般为2或者4。

    ensure_ascii:是否允许Ascii码。若为True

    Die Grundstruktur ist key: value, der Schlüssel kann nur ein string sein und der Wert kann ein String, eine Liste, eine Zahl oder ein anderer Schlüssel sein. Wertepaar .

    Die folgenden Daten zeigen die verschiedenen Formen der JSON-Struktur sehr gut:

    import json, os
    
    class JsonUtils():
        relative_url = "./data/"
        abstract_url = "file:///home/ubuntu/qqbot/data/rpg/"
    
        @staticmethod
        def __preBuildFile(file: str, *default: Union[str, dict]) -> bool:
            """
            判断文件及路径是否存在,若不存在则创建并生成对应文件内容
    
            :param file: 文件路径
            :param default: 默认文件内容
            :return:
            """
            if (not os.path.exists(file)):
                path = os.path.split(file)
                if (not os.path.exists(path[0])):
                    os.mkdir(path[0])
                with open(file, "w", encoding=utf-8") as f:
                    if (default):
                        arg = default[0]
                        if (isinstance(arg, str)):
                            f.write(arg)
                        elif (isinstance(arg, dict)):
                            try:
                                js = json.dumps(arg, indent=4, ensure_ascii=False)
                                f.write(js)
                            except json.JSONEncoder:
                                return False
                        else:
                            f.write(str(arg))
                    else:
                        f.write("")
            return True
                          
        @classmethod
        async def read(cls, filename: str, *default) -> Tuple[dict, bool]:
            """
            读取指定json文件
    
            :param filename: 文件路径
            :param default: 若无此文件,创建该文件时写入的内容
            :return: [读取到的内容, 是否为新创建的文件]
            """
            file_url = cls.relative_url + filename
            if (default):
                res = JsonUtils.__preBuildFile(file_url, default[0])
            else:
                res = JsonUtils.__preBuildFile(file_url)
            with open(file_url, "r", encoding="utf-8") as f:
                content = json.load(f)
            return (content, res)
    
        @classmethod
        async def write(cls, filename: str, data: dict) -> None:
            """
            写入Json数据
            
            :param filename: 文件路径
            :param data: 写入的数据
            :return: 
            """
            file_url = cls.relative_url + filename
            JsonUtils.__preBuildFile(file_url)
            with open(file_url, "w", encoding="utf-8") as f:
                content = json.dumps(data, indent=4, ensure_ascii=False)
                f.write(content)

    Hinweis: Alle Json-Texte müssen {} in der äußersten Ebene haben🎜🎜Verwenden Sie Python, um Daten im JSON-Format zu lesen und zu schreiben🎜 🎜Als nächstes verwenden wir den obigen Json-Text als Modell, um das Parsen von Json-Dateien zu erklären. 🎜🎜Wenn wir in Python JSON-Dateien analysieren möchten, müssen wir zuerst die json-Bibliothek importieren, die mit der Python-Installation geliefert wird, d. h. import json, und dann können wir es tun Führen Sie JSON-Operationen durch. 🎜

    1. JSON-Datei lesen

    🎜Der folgende Code erklärt uns, wie man eine JSON-Datei liest🎜rrreee
    🎜json.load liest JSON-Text direkt aus der Datei, während json.loads JSON liest. verschlüsselter Text anstelle einer lokalen Datei. 🎜
    🎜Der obige Code liest JSON-Daten aus der Datei „new.json“ im aktuellen Verzeichnis, und dann konvertiert die Methode json.load den gelesenen JSON-Text in das Python-Wörterbuch in der Inhaltsvariablen gespeichert. Bei der Verarbeitung von Daten im JSON-Format in Python handelt es sich tatsächlich um die Verarbeitung kombinierter Datentypen, die aus Wörterbüchern und Listen bestehen. 🎜🎜Wenn wir nun beispielsweise den Wert des unteren „d“ (Position 1 im Code) aus dem obigen JSON-Text extrahieren möchten, können wir val=content[“c“][“d“] operieren, also Dass Der Wert von d wird erhalten, nämlich 333. Zusätzlich zum obigen Beispiel können wir auch die Liste der []-Pakete sehen. Wenn wir den Wert von „a“ (Position 2 im Code) erhalten möchten, sollten wir so schreiben: val=content[“a“ ][ 1]["a"], zu diesem Zeitpunkt ist der Wert von val 2. 🎜

    2. JSON-Datei schreiben

    rrreee🎜Der obige Code wird verwendet, um data-Daten in die JSON-Datei zu schreiben, in der die dump-Methode viele enthält Hier sprechen wir nur über drei der oben genannten Codes, bitte überprüfen Sie die anderen selbst. 🎜🎜obj: Der erste Parameter oben wird verwendet, um die Daten zu übergeben, die in die Json-Datei geschrieben werden müssen. 🎜🎜fp: Der zweite oben erwähnte Parameter wird verwendet, um den Textzeiger zu übergeben, der in Json-Daten geschrieben werden muss. 🎜🎜indent: Übergibt den Newline-Einrückungsbetrag der Json-Datei. Normalerweise 2 oder 4. 🎜🎜ensure_ascii: Ob ASCII-Code zugelassen werden soll. Wenn es True ist (Standard), werden alle eingegebenen chinesischen Zeichen in uXXXX konvertiert und gespeichert. 🎜🎜Schreiben Sie selbst ein JsonUtils🎜🎜Der Code stammt von einem großen Kerl auf Github. Die Codekommentare geben detaillierte Anweisungen zur Verwendung! 🎜rrreee

    Das obige ist der detaillierte Inhalt vonSo lesen und schreiben Sie Daten im JSON-Format in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen