dzz: Dizzy の冬 (Default)
[personal profile] dzz
Буквально вчера нейросетевой помощник Bito не осилил написать код преобразования текстовых строк вида
name[name_level1][name_level2][.....][name_levelX]=value
в JSON-форму
{"name":{"name_level1":{"name_level2":{.....:{"name_levelX":value}...}}}

При том, что задачка простая и решается даже без рекурсии. Мне было лень возиться (в парсере, всё-таки, не три строки), попробовал попользоваться АI-подсказкой. Не помогло.

Пришлось заморочиться и написать код самому.

Date: 2023-11-30 02:26 pm (UTC)
From: [identity profile] elven-gypsy.livejournal.com
А что он выдал?

Date: 2023-11-30 02:34 pm (UTC)
From: [identity profile] dzz.livejournal.com

Нерабочий код, не решающий задачу корректно:


def convert_to_json(string):
      # Split the string into a list of key-value pairs.
      pairs = string.split("=")
      # Create a dictionary from the key-value pairs.
      dictionary = {}
      for pair in pairs:
            key, value = pair.split("[")
            key = key.strip("]")
            value = value.strip("]")
            dictionary[key] = value
  # Return the JSON object.
  return json.dumps(dictionary)

string = "p[x][y][z][t]=v"
json_object = convert_to_json(string)
print(json_object)

При попытке выполнить получаем:

File "test.py", line 29, in
json_object = convert_to_json(string)
File "test.py", line 19, in convert_to_json
key, value = pair.split("[")
ValueError: too many values to unpack (expected 2)

Edited Date: 2023-11-30 02:46 pm (UTC)

Date: 2023-11-30 02:49 pm (UTC)
From: [identity profile] dzz.livejournal.com
Прошу прощения за многократное редактирование кода выше, дол прекрасный "новый редактор комментариев" оформляет отдельным параграфом каждую строку преформатированного (<pre>...</pre>) текста.

За что нужно бы кое-кому в СУП-е что-то оторвать :)

January 2026

S M T W T F S
     123
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 1st, 2026 01:53 am
Powered by Dreamwidth Studios