首页 > 其他分享 >处理json格式的数据

处理json格式的数据

时间:2024-07-23 11:50:55浏览次数:6  
标签:处理 text content item json print 格式 datalist data

如何处理json格式的数据

1. 主要处理三类数据

  • 带有json格式的数据
    • 形式:[{key:value}]
    • 提取:文字、图片链接、文档链接
[{"content":"点击“产品开发库”,右上角“展开筛选”,按条件筛选流程信息。","type":"text"},{"content":"\n","type":"text"},{"height":0,"key":"img_v3_02cu_1899636b-dfc3-43df-97fe-80ccc774c32g","src":"图片链接","type":"img","width":1313},{"content":"\n","type":"text"},{"content":"\n","type":"text"}]
  • 纯字符串
    • 第一种需要提取出来“”之间的内容
    • 第二种需要提取单行的内容
数据一:
"1、查看当前审批人:可在正式数据发放/过程数据发放中,当前审批人员列中查看当前审批人。如已审批完则不显示审批人。
 2、单据状态:在状态列,第1个小图标表示单据的流程状态(鼠标悬停可显示),第2个小图标表示数据状态(鼠标悬停可显示)"

数据二:
计划完成时间前提交任务就不算超期

代码:

import re
import json
import pandas as pd

# 示例输入文件路径
input_file_path = 'C:\\Users\\user\\Desktop\\test.txt'

# 处理多行“”中的内容,并把他们合并为一个内容+单行纯文本
def parse_notebook_file(input_file):
    datalist = []
    with open(input_file, 'r', encoding='utf-8') as f:
        for line in f:
            try:
                # 尝试将行解析为JSON
                datalist.append(json.loads(line))
            except json.JSONDecodeError:
                final_text = ""
                if line.startswith('"'):
                    final_text+=line[1:]  #去除第一行的单引号
                    # print(line[1:])
                    # 如果当前行以双引号开始,尝试找到以双引号结束的行
                    for next_line in f:
                        if len(re.findall(r'"', next_line))%2!=1 : #判断“个数是否奇数
                            final_text += next_line
                            # print(final_text)
                        else:
                            final_text += next_line[:len(next_line)-2] #去除最后一行的单引号
                            # print(final_text)
                            datalist.append(final_text)
                            # print(datalist)
                            break
                            # break
                            # 如果找到以双引号结束的行,将这两行之间的内容作为一个文本条目添加到列表中

                else:
                    # 如果解析失败,则将行作为纯文本添加
                    datalist.append(line.strip())
    # for data in datalist:
    #     print(data)
    #     print('---------')

    return datalist

# 处理输入文件并生成datalist
datalist = parse_notebook_file(input_file_path)

# 提取json字符串中的中文、图片链接、文档链接
def collect_pure_text_and_links(datalist):
    results = []
    for data in datalist:
          # print(data)
          # print('----------------------')
          if isinstance(data, list):  # 检查是否为列表(JSON格式-列表中嵌套字典)
             # print(data)
             content_parts = []
             for item in data:
                # print(item)
                if item["type"] == "text":
                    # 提取中文
                    chinese_text = re.findall(r'[\u4e00-\u9fa5]+', item["content"])
                    # 提取链接
                    links = re.findall(r'https?://[^\s]+', item["content"])
                    # 合并中文和链接
                    combined_content = ' '.join(chinese_text + links)
                    if combined_content:
                        # print(item["content"].replace(combined_content, combined_content.replace(',', ',')))
                        content_parts.append(item["content"].replace(combined_content, combined_content.replace(',', ',')))
                elif item["type"] == "img":
                    # 添加图片链接
                    # print(item["src"])
                    content_parts.append(item["src"])
                elif item["type"] == "hyperlink":
                    # 提取链接和文本
                    content_parts.append(item["text"])
                    # print(item["text"])
                    content_parts.append(item["url"])
                    # print(item["url"])
             results.append(' '.join(content_parts))
             # print('----------------------')
          else:

             results.append(data)
             # print('----------------------')
    for data_r in results:
        print(data_r)
        print('----------------------')

    return results

# 使用新函数处理并收集数据
collected_data = collect_pure_text_and_links(datalist)

# 将收集的数据存储到Excel文件中
output_file_path = 'C:\\Users\\user\\Desktop\\test_output.xlsx' #输出路径,运行程序时,该文件不要打开
df = pd.DataFrame(collected_data, columns=['Content'])
df.to_excel(output_file_path, index=False)

output_file_path

标签:处理,text,content,item,json,print,格式,datalist,data
From: https://www.cnblogs.com/yuyingblogs/p/18318009

相关文章

  • 如何处理多值列的数据集?
    我有14列X9224行的数据集,它包含餐厅ID、餐厅名称、城市、美食等列。我的美食列在单行上包含多个值,如意大利、法国、印度类别。如何为线性回归算法清理该数据集col的数据?如果,我尝试通过一个热代码将这些类别分成列,它显示140列。帮助我清理该列。我尝试为回归算法分......
  • 数字信号处理 实验一 系统响应及系统稳定性 免费附上机实验报告和原程序
    (1)编制程序,包括产生输入信号、单位脉冲响应序列的子程序,以及用filter函数或conv函数求解系统输出响应的主程序。程序中要有绘制信号波形的功能。(2)给定一个低通滤波器的差分方程为输入信号分别求出和的系统响应,并画出其波形。求出系统的单位脉冲响应,画出其波形。(3)给定系统......
  • @RequestPart-Java接口,同时传参JSON对象数据和文件
    简单介绍前端传递文件参数的时候,通常会使用POST方式传参,将请求header的content-type设置为:multipart/form-data(因为GET请求只能传递文本类型的参数,而文件属于二进制数据,无法直接通过GET方式传递。)前端通过POST传参时,header的content-type设置为"application/json"......
  • 更改 pyplot 中 xaxis 标签的格式
    我正在尝试重新格式化x轴,但我所做的一切都不起作用当我使用:importpandasaspdimportmatplotlib.pyplotaspltz=pd.DataFrame([[2000,1,2],[2001,2,3],[2004,5,6]])z=z.set_index(0)z.plot()plt.show()x轴标签格式为2,000.0到2,000.0如何让它简单地显......
  • 类型错误:无法将函数返回值转换为 Python 类型!签名是 () -> 处理 anaconda spider
    这是代码:importosimportrandomimportnumpyasnpimportpandasaspdimporttensorflowastffromtensorflow.kerasimportbackendasKfromtensorflow.keras.layersimportDense,Dropout,Flatten,Conv2D,MaxPool2D,Input......
  • Linux 行文本处理工具sed
    sed(streameditor)是Linux和Unix系统中非常强大的文本处理工具,它可以对文本进行过滤和转换。sed以行为单位处理文本,可以通过读取输入文件(或标准输入),应用一系列的编辑命令,然后将结果输出到标准输出(通常是屏幕)或文件中。基本语法sed[选项]...{脚本-地址}{命令}[输入文件]......
  • 使用 json 配置文件进行 Python 日志记录
    我玩弄了日志模块,发现了一些我不太清楚的事情。首先,因为这是一个大程序,我希望代码尽可能简单,因此我使用了json配置文件.{"version":1,"disable_existing_loggers":false,"formatters":{"simple":{"format":"%(asctime)s-%(name)s......
  • python 脚本中的路点用于处理大数据集
    我编写了一个脚本,将一堆来自api的请求写入csv文件。该api中有数千个请求,并且在结束循环/退出程序之前永远不会结束。如何合并航路点,以便如果再次发生停顿,它会自动继续前进并最终打印所有请求?我尝试了一些不起作用的方法,但我不知道下一步该怎么做。以下是使用航路点......
  • 如何使代码格式再次适用于 Python(Mac 上的 Visual Studio Code)?
    在Mac上,Option+Shift+F现在会显示“没有安装用于‘python’文件的格式化程序”。消息框:我尝试安装这个插件,但没有看到这种情况的变化:我已经为Python安装了这两个插件:但是正如@starball提到的,它可能已经减少了支持现在。......
  • 事件处理模式
    事件处理模式reactor模式reactor是一种事件处理模式,出现要解决的问题是要将原本IO管理转变为更关心事件管理,每个事件发生的时候调用回调函数进行处理。构成register注册事件callback回调函数包括io,event,callback,rbuffer,wbuffer需要注意的是event和call_back对应......