You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取文件提取各Client ID的主副号码并生成JSON串

解决方案:读取主副号码文件并生成目标JSON

我来帮你搞定这个需求!针对你提到的读取primary.txt和secondary.txt、提取每个Client ID对应的主副号码并生成JSON字符串的需求,这里有个实用的Python实现方案,完全适配你说的多Client ID、每个ID对应50-60个号码的场景:

实现思路

  • 读取两个文件的内容,将文件内的类字典字符串安全转换为Python字典
  • 收集所有唯一的Client ID,避免遗漏仅存在于单个文件中的ID
  • 为每个ID整合对应的主、副号码列表,构建统一的数据结构
  • 将最终结构转换为格式化的JSON字符串(也可直接保存到文件)

完整代码实现

import ast
import json

# 读取并解析primary.txt文件
with open('primary.txt', 'r', encoding='utf-8') as f:
    primary_raw = f.read().strip()
    primary_data = ast.literal_eval(primary_raw)

# 读取并解析secondary.txt文件
with open('secondary.txt', 'r', encoding='utf-8') as f:
    secondary_raw = f.read().strip()
    secondary_data = ast.literal_eval(secondary_raw)

# 收集所有存在的Client ID(确保覆盖两个文件中的所有ID)
all_client_ids = set(primary_data.keys()).union(set(secondary_data.keys()))

# 构建目标数据结构
client_number_list = []
for client_id in all_client_ids:
    client_entry = {
        "client_id": client_id,
        "primary_numbers": primary_data.get(client_id, []),  # 无对应ID时返回空列表
        "secondary_numbers": secondary_data.get(client_id, [])
    }
    client_number_list.append(client_entry)

# 生成格式化的JSON字符串
output_json = json.dumps(client_number_list, indent=4)

# 可选:将JSON写入文件保存
with open('client_numbers.json', 'w', encoding='utf-8') as f:
    f.write(output_json)

# 打印结果
print("生成的JSON内容:")
print(output_json)

代码关键点说明

  • 安全解析文件内容:使用ast.literal_eval()替代eval(),既能正确解析类字典字符串,又能避免执行恶意代码,更安全可靠
  • 全ID覆盖:通过集合的union()方法合并两个文件的Client ID,确保不会遗漏仅出现在其中一个文件的ID
  • 容错处理:用dict.get()方法获取号码列表,若某个ID在其中一个文件中不存在,会返回空列表,保证JSON结构的一致性
  • 格式化输出:json.dumps()的indent=4参数让JSON内容排版整齐,方便阅读;如果需要紧凑格式,可去掉该参数

示例输出(基于你提供的测试数据)

运行代码后,会生成如下JSON字符串:

[
    {
        "client_id": 1,
        "primary_numbers": [0, 273, 546, 819],
        "secondary_numbers": [342, 1102, 608, 684]
    },
    {
        "client_id": 2,
        "primary_numbers": [274, 1, 820],
        "secondary_numbers": [115, 191, 837, 1559]
    },
    {
        "client_id": 3,
        "primary_numbers": [1016, 275, 821],
        "secondary_numbers": [1256, 116]
    }
]

注意事项

  • 如果你的文件使用非UTF-8编码,可在open()函数中指定encoding参数(比如encoding='gbk')
  • 无论Client ID是整数还是字符串类型,代码都能自动识别并正确处理
  • 针对每个ID50-60个号码、多ID的场景,该方案内存占用低、处理效率高,完全能满足需求

内容的提问来源于stack exchange,提问作者user1950349

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:22:30