Как создать json, который имеет 3 пользователя и 2 ключа на пользователя, используя python? - PullRequest
0 голосов
/ 25 марта 2020

Вопрос:

  • Как создать объект с 3 пользователями и 2 ключами на пользователя, используя python?

Цель:

  • У меня есть 3 пользователя, которые имеют 2 ключа на пользователя. Мне нужно создать json для него. Но код сильно загроможден.

Ожидаемый результат:

[
    {
        "userID": 2536414,
        "username": "Sairam",
        "password": "7jhyf45[kh]",
        "keys": [
            {
                "premium": true,
                "key": "K89JH-IUFH5-J6HR4-PO67H-OP09U"
            },
            {
                "special_sandbox": true,
                "key": "K89JH-65POL-J6HR4-PO67H-OP09U-89IOU-POHU7"
            }
        ]
    }
]

как для трех пользователей.

Фактический результат:

[
    {
        "userID": "23927612607",
        "username": "Ryj\\",
        "password": "&f~6)g/l@(8",
        "keys": [
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "T38PH-HFQIY-KK88M-GRWTK-AEM2O"
            }
        ]
    },
    {
        "userID": "23927612607",
        "username": "Ryj\\",
        "password": "&f~6)g/l@(8",
        "keys": [
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "RB3YV-27DTH-IQD0R-2JHNF-6N70P"
            },
            {
                "special_sandbox": true,
                "key": "XFP9R-RKZ1V-V8TEJ-FPJTS-JT0ER-8RRFY-594V1"
            },
            {
                "premium": true,
                "key": "T38PH-HFQIY-KK88M-GRWTK-AEM2O"
            }
        ]
    }

Создает json как выше.

Код для справки:

global userid1, username1, password1, key1, premium_test, special_sandbox_test, tokens, key_dict

l1 = []
key_list_dict = []
p1 = []
p3 = []
p5 = []
p7 = []
key_list = []
k = 10000000000
j = 99999999999
p10 = 2
for i in range(3):
    member = str(input("Type the person's name. "))
    if member == 'exit()' or member == 'exit' or member == 'e':
        print("Okay exiting!")
        break
    else:
        u8 = re.search(r"\s", member)
        if u8:
            uo, ui1 = member.split(' ')
            iw, a98 = str(uo).capitalize(), str(ui1).capitalize()
            p98 = ''.join(iw + '_' + a98)
            member = p98
        else:
            uo = member.capitalize()
            member = uo
        p1.append(member)
    id1 = ran.randint(k, j)
    p3.append(str(id1))
    for _ in range(p10):
        yt = ''.join(l + '-' * (n % 5 == 4) for n, l in enumerate(ran.choice(stri.ascii_uppercase + stri.digits) for _ in range(ran.choice([25, 35])))).rstrip('-')
        p5.append(yt)
    p6 = ''.join(ran.choice(stri.ascii_lowercase + stri.digits + stri.punctuation) for _ in range(ran.randint(10, 36)))
    p7.append(p6)
    for a, e, o, y in zip(p1, p3, p5, p7):
        userid1 = e
        username1 = a
        password1 = y
        key1 = o
        key_list.append(key1)
        userid = userid1
        username = username1
        password = password1
        tokens = ["userID", "username", "password", "keys"]
        values = [userid, username, password]
        user_dict = {tokens[i]: values[i] for i in range(len(values))}
        for key in key_list:
            key_test = key.replace("-", "")
            premium_test = True if (len(key_test) == 25) else False
            special_sandbox_test = True if (len(key_test) == 35) else False
            key_tokens = ["premium", "special_sandbox", "key"]
            key_values = [premium_test, special_sandbox_test, key]
            premium_key_token = ["premium", "key"]
            premium_key_value = [premium_test, key]
            special_sandbox_key_token = ["special_sandbox", "key"]
            special_sandbox_key_value = [special_sandbox_test, key]
            if premium_test:
                key_dict = {premium_key_token[i]: premium_key_value[i] for i in range(len(premium_key_value))}
            else:
                key_dict = {special_sandbox_key_token[i]: special_sandbox_key_value[i] for i in range(len(special_sandbox_key_value))}
            key_list_dict.append(key_dict)
            user_dict[tokens[3]] = key_list_dict
        print(user_dict)
        l1.append(user_dict)
    print(l1)
with open("file1.json", "w") as f1:
    json.dump(l1, f1, indent=4)

json слишком большой, поэтому я вырезал некоторые части.

Спасибо за чтение !!

1 Ответ

1 голос
/ 25 марта 2020

Код был нормальный беспорядок, но здесь вы go:

import re
import random as ran
import string as stri
import json

global userid1, username1, password1, key1, premium_test, special_sandbox_test, tokens, key_dict

l1 = []
key_list_dict = []
name_list = []
id_list = []
p5 = []
pwd_list = []
key_list = []
user_dict_final = []
k = 10000000000
j = 99999999999
p10 = 2

for i in range(3):
    member = str(input("Type the person's name. "))
    if member == 'exit()' or member == 'exit' or member == 'e':
        print("Okay exiting!")
        break
    else:
        u8 = re.search(r"\s", member)
        if u8:
            uo, ui1 = member.split(' ')
            iw, a98 = str(uo).capitalize(), str(ui1).capitalize()
            p98 = ''.join(iw + '_' + a98)
            member = p98
        else:
            uo = member.capitalize()
            member = uo
        name_list.append(member)
    id1 = ran.randint(k, j)
    id_list.append(str(id1))

    for _ in range(p10):
        yt = ''.join(l + '-' * (n % 5 == 4) for n, l in enumerate(ran.choice(stri.ascii_uppercase + stri.digits) for _ in range(ran.choice([25, 35])))).rstrip('-')
        premium_key = ''.join(l + '-' * (n % 5 == 4) for n, l in enumerate(ran.choice(stri.ascii_uppercase + stri.digits) for _ in range(25))).rstrip('-')
        special_sandbox_key = ''.join(l + '-' * (n % 5 == 4) for n, l in enumerate(ran.choice(stri.ascii_uppercase + stri.digits) for _ in range(35))).rstrip('-')
        p5.append(yt)
    pwd = ''.join(ran.choice(stri.ascii_lowercase + stri.digits + stri.punctuation) for _ in range(ran.randint(10, 36)))
    pwd_list.append(pwd)
    userid = id1
    username = member
    password = pwd
    tokens = ["userID", "username", "password", "keys"]
    values = [userid, username, password]
    user_dict = {tokens[i]: values[i] for i in range(len(values))}
    premium_key_token = ["premium", "key"]
    premium_key_value = [True, premium_key]
    special_sandbox_key_token = ["special_sandbox", "key"]
    special_sandbox_key_value = [True, special_sandbox_key]
    premium_key_dict = {premium_key_token[i]: premium_key_value[i] for i in range(len(premium_key_value))}
    sandbox_key_dict = {special_sandbox_key_token[i]: special_sandbox_key_value[i] for i in range(len(special_sandbox_key_value))}
    key_list_dict.append(premium_key_dict)
    key_list_dict.append(sandbox_key_dict)
    print("Key_list: " + str(key_list_dict))
    user_dict[tokens[3]] = key_list_dict
    user_dict_final.append(user_dict)
    print("User_dict: {}".format(user_dict))
    key_list_dict = []

with open("file1.json", "w") as f1:
    json.dump(user_dict_final, f1, indent=4)
...