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.dump
将json_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
函数进行转换操作