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>) текста.

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

December 2025

S M T W T F S
  12 3456
7 8 9 10 11 1213
14151617181920
21222324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 31st, 2025 08:36 pm
Powered by Dreamwidth Studios