python 提取key 为中文的json 串方法

提取key为中文的JSON串的方法,可以利用Python的json模块和正则表达式实现。具体步骤如下:

步骤一:读取JSON文件

首先,使用Python中的open函数来读取JSON文件,并使用json.load函数将文件内容加载为JSON对象。示例代码如下:

import json

with open('data.json', 'r', encoding='utf-8') as fp:
    json_data = json.load(fp)

步骤二:提取中文key的正则表达式

使用正则表达式来提取中文key,使用re.compile函数将匹配中文key的正则表达式编译成一个正则对象。示例代码如下:

import re

chinese_pattern = re.compile(r'[\u4e00-\u9fa5]+')

步骤三:提取中文key及其对应的value

使用一个循环来遍历JSON对象的所有键值对,如果key是中文,那么就将它添加到一个新的字典中。同时,将中文key所对应的value也添加到这个字典中,以便后续操作。示例代码如下:

chinese_dict = {}
for key, value in json_data.items():
    if chinese_pattern.search(key):
        chinese_dict[key] = value

示例:提取中文key的JSON串

假设我们有一个JSON文件,内容如下:

{
    "姓名": "小明",
    "年龄": 18,
    "性别": "男"
}

我们可以运行以下代码来提取其中所有的中文key及其对应的value:

import json
import re

with open('data.json', 'r', encoding='utf-8') as fp:
    json_data = json.load(fp)

chinese_pattern = re.compile(r'[\u4e00-\u9fa5]+')

chinese_dict = {}
for key, value in json_data.items():
    if chinese_pattern.search(key):
        chinese_dict[key] = value

print(json.dumps(chinese_dict, indent=4, ensure_ascii=False))

运行结果如下:

{
    "姓名": "小明",
    "性别": "男"
}

示例:提取多层嵌套的JSON串

如果JSON串是多层嵌套的,我们可以使用递归函数来实现。以下是一个示例:

import json
import re

with open('data.json', 'r', encoding='utf-8') as fp:
    json_data = json.load(fp)

chinese_pattern = re.compile(r'[\u4e00-\u9fa5]+')

def extract_chinese_keys(json_data):
    chinese_dict = {}
    if isinstance(json_data, dict):
        for key, value in json_data.items():
            if chinese_pattern.search(key):
                chinese_dict[key] = extract_chinese_keys(value)
    elif isinstance(json_data, list):
        chinese_dict = [extract_chinese_keys(item) for item in json_data]
    else:
        chinese_dict = json_data
    return chinese_dict

chinese_data = extract_chinese_keys(json_data)

print(json.dumps(chinese_data, indent=4, ensure_ascii=False))

运行结果和上一个示例一样,都是:

{
    "姓名": "小明",
    "性别": "男"
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 提取key 为中文的json 串方法 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 《程序员的自我修养》学习笔记——揭秘源文件到可执行文件的编译过程【第一弹】

    程序代码到可执行程序编译链接过程 预编译 以c++/c 语言为例,预编译阶段的工作有以下几点: 处理所有#define 及条件预编译指令(如 #if,#ifdef…..),并展开所有宏定义。 删除所有注释(“//” ,”/**/”)。 处理 “#include”,将被包含文件插入该预编译指令位置。(整过过程递归进行,因为被包含文件也可能包含其他文件) 添…

    C语言 2023年4月18日
    00
  • C语言中如何进行内存管理?

    C语言中内存管理主要分为两种:静态分配和动态分配。 静态分配:在程序编译阶段就分配好内存,变量在整个程序运行期间都存在,并且内存地址不会改变。静态分配可以通过以下几种方式实现: 局部静态变量:在函数中声明,但变量的存储空间在程序执行期间都存在,且只会被初始化一次。例如: void func() { static int count = 0; count++;…

    C 2023年4月27日
    00
  • C/C++中I/O进阶详解及其作用介绍

    C/C++中I/O进阶详解及其作用介绍 什么是C/C++中的I/O I/O即输入和输出,是计算机程序的必要组成部分。C/C++中的I/O类包含了对文件、网络、控制台等资源的读写操作。 I/O的作用 I/O操作主要用于以下几个方面: 文件读写:从文件中读取数据或将数据写入文件,常用于数据持久化; 网络通信:通过网络收发数据; 用户输入输出:从控制台等标准输入输…

    C 2023年5月22日
    00
  • 使用批处理文件异地备份数据库(最近几天的数据)

    下面是使用批处理文件异地备份数据库(最近几天的数据)的完整攻略: 第一步:编写批处理文件 打开文本编辑器,新建一个批处理文件,后缀名为“.bat”。比如,我们可以用“backup.bat”来命名这个文件。 在批处理文件中输入以下代码: @echo off REM 配置数据库备份参数 set backup_path=D:\Backup\Database set…

    C 2023年5月22日
    00
  • matlab中分号、冒号、逗号等常用标点符号的功能和用法总结

    下面一步步给你讲解”matlab中分号、冒号、逗号等常用标点符号的功能和用法总结”。 分号 (;) 在Matlab中,分号的主要作用是控制输出。将分号放在语句末尾,即可控制此语句是否在命令行窗口显示结果。具体来说,如果在语句后面加上分号,Matlab将不显示该语句的结果。 例如: a = [1 2 3; 4 5 6]; b = a + 1; c = a – …

    C 2023年5月22日
    00
  • Android编程之json解析实例详解

    我将为你介绍一下 “Android编程之json解析实例详解” 的完整攻略。 1. 什么是Json? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript代码语法,但是与之无关。在Android编程中,Json数据常常被用来传递数据。 2. Json的基本格式 下面是一个Json的基本格式: …

    C 2023年5月23日
    00
  • 利用C语言解决八皇后问题以及解析

    利用C语言解决八皇后问题以及解析 什么是八皇后问题? 八皇后问题是一种经典的问题,它是指在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击。换句话说就是在一个8×8的棋盘上放置8个棋子,使得每个棋子都不能在同一行、同一列或同一对角线上。这是一个经典的递归问题,解法涉及到回溯算法等基本算法和数据结构知识点。 八皇后问题的解法 八皇后问题的常规解法是使用回溯算…

    C 2023年5月23日
    00
  • Oracle 19c RAC 手工建库的搭建过程

    下面就为您讲解“Oracle 19c RAC 手工建库的搭建过程”的完整攻略。 一、前置条件 在开始搭建 Oracle 19c RAC 环境之前,需要满足以下的前置条件: 服务器环境:必须具备至少两台运行 Oracle Linux 7.2 的服务器,它们必须在同一个局域网中,并且它们需要满足 Oracle 的硬件和软件要求。 网络环境:必须正确配置每个节点的…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部