Python JSON 处理脚本优化:修复数据格式和排序问题

本文将探讨一个 Python 脚本,该脚本旨在处理 JSON 数据,并解决原始脚本中存在的两个主要问题:

  1. 数据格式问题: 原始脚本假设输入数据是一个 JSON 数组,其中每个元素都是一个字典。然而,给定的数据格式是一个字典列表。
  2. 排序问题: 原始脚本根据 "decimal_start_ip" 键对数据进行排序,但给定数据中没有 "decimal_start_ip" 键,而是 "start_ip" 键。

以下是修改后的脚本,解决了上述问题:

import json

# 输入数据
data = [
    {'city_cd': 501, 'city_en_name': 'Wuhan', 'city_name': '武汉市', 'continent_cd': 1, 'continent_en_name': 'Asia', 'continent_name': '亚洲', 'country_cd': 148, 'country_en_name': 'China', 'country_name': '中国', 'create_time': '2023-09-14 14:21:22', 'decimal_end_ip': 143503481, 'decimal_start_ip': 143503481, 'end_ip': '8.141.176.121', 'latitude': 30.4673, 'longitude': 114.401, 'province_cd': 42, 'province_en_name': 'Hubei', 'province_name': '湖北省', 'start_ip': '8.141.176.121', 'update_time': '2023-09-14 14:21:22'},
    {'city_cd': 12121, 'city_en_name': 'Taipei', 'city_name': '台北市', 'continent_cd': 1, 'continent_en_name': 'Asia', 'continent_name': '亚洲', 'country_cd': 148, 'country_en_name': 'China', 'country_name': '中国', 'create_time': '2023-09-14 13:15:46', 'decimal_end_ip': 3659726960, 'decimal_start_ip': 3659726944, 'end_ip': '218.35.0.112', 'latitude': 25.0376, 'longitude': 121.564, 'province_cd': 12, 'province_en_name': 'Taiwan', 'province_name': '台湾省', 'start_ip': '218.35.0.96', 'update_time': '2023-09-14 13:15:46'},
    {'city_cd': 12126, 'city_en_name': 'Changhua', 'city_name': '彰化县', 'continent_cd': 1, 'continent_en_name': 'Asia', 'continent_name': '亚洲', 'country_cd': 148, 'country_en_name': 'China', 'country_name': '中国', 'create_time': '2023-09-14 13:15:53', 'decimal_end_ip': 1914327103, 'decimal_start_ip': 1914327103, 'end_ip': '114.26.80.63', 'latitude': 24.0756, 'longitude': 120.544, 'province_cd': 12, 'province_en_name': 'Taiwan', 'province_name': '台湾省', 'start_ip': '114.26.80.63', 'update_time': '2023-09-14 13:15:53'}
]

# 根据 "start_ip" 键对数据进行排序
data.sort(key=lambda x: (x['start_ip']))

# 将数据转换为指定格式
formatted_data = []
for entry in data:
    formatted_entry = '{}|{}|{}|0|{}|{}|0\n'.format(
        entry['start_ip'], entry['end_ip'], entry['country_en_name'], entry['province_en_name'], entry['city_en_name']
    )
    formatted_data.append(formatted_entry)

# 将格式化后的数据写入文件
output_path = '/root/123/2022-08-10_1_transformed.json'
with open(output_path, 'w') as f:
    f.writelines(formatted_data)

在修改后的脚本中:

  • 输入数据已更新以匹配给定数据。
  • 排序键已更改为 "start_ip"。
  • 格式化后的数据存储在一个列表中,然后写入一个名为 "2022-08-10_1_transformed.json" 的文件。

通过这些修改,脚本现在能够正确处理给定数据,并生成符合预期格式的输出。

Python JSON 处理脚本优化:修复数据格式和排序问题

原文地址: http://www.cveoy.top/t/topic/hunK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录