与风景对话_交互式旅游推荐系统_数据收集与预处理_07

4. 数据的整合与合并

目的

由于我们爬取的数据都是基于城市或省份的,而且不同爬虫爬取的格式也不尽相同,如下所示:

在这里插入图片描述

而我们只需要一个Json文件来存储所有数据集,这时就需要将这些数据都整合起来,来方便对模型的输入。

格式转换 txt to json

首先,我们需要将如下所有txt文件格式的数据转为符合要求的json格式的数据
在这里插入图片描述

符合要求的json格式:
在这里插入图片描述

通过手动转化的方式显然是不可行的,考虑到python语言的简易性,我们可以通过写一个python函数来实现txt到此json格式的转换。
其中instruction部分如果txt中本身包含标签,则就为原来的标签,如果不包含,统一修改为#地点#旅游攻略。
而input根据模型要求统一设为空。

以下是对转换函数的详细解释:

def txt_to_json(txt_file, json_file):

定义一个名为txt_to_json的函数,它接受两个参数:txt_file(输入的TXT文件路径)和json_file(输出的JSON文件路径)。

    # 读取TXT文件中的内容
    with open(txt_file, 'r', encoding='utf-8') as file:
        lines = file.readlines()

使用with open语句以只读模式和UTF-8编码打开指定的TXT文件,并读取文件中的所有行,将它们存储在lines列表中。

    # 创建一个空的列表来存储JSON数据
    json_data = []

初始化一个空列表json_data,用于存储即将构造的JSON对象。

    # 自定义的instruction值
    instruction_value = "#青岛#旅游攻略#"

定义一个字符串变量instruction_value,其值为"#青岛#旅游攻略#",用于作为每个JSON对象中的固定字段值。

    # 遍历每一行并构造JSON对象
    for line in lines:

开始遍历从TXT文件中读取的每一行。

        # 创建一个字典来表示一个JSON对象
        json_object = {
            "instruction": instruction_value,
            "input": "",
            "output": line.strip()  # 去除行尾的换行符
        }

对于每一行,创建一个字典json_object来表示一个JSON对象。字典包含三个键值对:

  • "instruction"键的值为instruction_value
  • "input"键的值为空字符串""
  • "output"键的值为当前行内容,并使用strip()方法去除行尾的换行符。
        # 将这个JSON对象添加到列表中
        json_data.append(json_object)

将构造的JSON对象添加到json_data列表中。

    # 将列表转换为JSON格式并写入JSON文件
    with open(json_file, 'w', encoding='utf-8') as file:
        json.dump(json_data, file, ensure_ascii=False, indent=4)

使用with open语句以写入模式和UTF-8编码打开指定的JSON文件路径。然后使用json.dumpjson_data列表转换为JSON格式并写入文件,确保非ASCII字符不被转义,并使用4个空格进行缩进格式化。

# 调用函数进行转换
txt_file = 'E:\OneDrive\桌面\spider\\res\马蜂窝青岛.txt'
json_file = 'E:\OneDrive\桌面\spider\\res\马蜂窝青岛.json'
txt_to_json(txt_file, json_file)

设置脚本的使用路径,指定输入的TXT文件路径txt_file和输出的JSON文件路径json_file,然后调用txt_to_json函数进行转换操作

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值