python-Json中文数据读写

写数据

网页爬取得数据中文数据以字典的形式保存json文件:

filepath = open('F:\\kettle\\source\\name_list.json', "w",encoding='gb18030')

data = json.dumps(dict_all,ensure_ascii = False, indent = 4 )

filepath.write(data)

filepath.close()

说明:“w”参数表示写入数据,每次执行将会全部覆盖原来的数据,其他参数说明如下:

            ---------------------------------------------------------------------------------------

            r 只能读 
            r+ 可读可写 不会创建不存在的文件 从顶部开始写 会覆盖之前此位置的内容 
            w+ 可读可写 如果文件存在 则覆盖整个文件不存在则创建 
            w 只能写 覆盖整个文件 不存在则创建 
            a 只能写 从文件底部添加内容 不存在则创建 
            a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建
            ----------------------------------------------------------------------------------------

            encoding 参数指定数据存入的格式,写入和读取的时候编码格式需要一致-均为存入数据的编码格式,我的dict是gb18030的,所以这里encoding='gb18030';

               如不不指定encoding格式,下面代码保持不变有些时候回报错gbk错误:

                        

                json.dumps 序列化时对中文默认使用的ascii编码,ensure_ascii=False(默认为true),将启用原来的编码形式;

                indent  设置缩进空格

读数据

with open('F:\\kettle\\source\\name_list.json', "r",encoding='gb18030') as f:

    data = json.load(f)

    f.close()

encoding编码与数据写入的时候保持一致即可。

打开的文件窗口一定要记得关闭哦,防止内存占用~

此时data为dict数据类型,用dict读取即可:

    增/改: dict["key"]=value key存在则修改key对应的值,key不存在则新增记录

                        dict_a.update(dict_b)  字典合并,b字典合并到a,相同的key则用b的值覆盖a

                        dict.setdefault("key","keyvalues") dict里面找key,如果key存在不操作,key不存在则插入记录对到dict里面;

    删: ①dict.pop("key") ② del dict["key"] ③随机删除一个慎用 dict.popitem()
    查:     ①dict["key"] --key不存在会报错 ②print(dict.get("key"))--存在返回值,不存在返回none ③判断key是否存在-print (“key” in dict)返回布尔类型
dict.keys() 返回key列表

你可能感兴趣的:(python)