Python: считывание кодов цветов с JSON - PullRequest
0 голосов
/ 10 января 2020

Я заинтересован в создании проекта, в котором скрипт python создаст цветной вывод. Структура моего проекта такова, что я хотел бы создать файл settings.json (обработанный пользователями), который содержит цветовые коды (ANSI).

Вот как выглядит мой файл settings.json. Обратите внимание, что в профиле bash вы обычно используете один escape-символ для обозначения цветовых кодов, но Python не позволяет мне читать файл только с одним escape-символом. :

{
  "column_head_color": {
    "group1": "\\033[91m",
    "group2": null
  }
}

А вот основной модуль:

import json


# import settings
with open('settings.json', encoding='utf-8') as file:
    settings = json.load(file)


for column in settings['column_head_color']:
    color_setting = settings['column_head_color'][column]

    if color_setting is None:
    # if setting is null, reset color
        settings['column_head_color'][column] = "\033[0m"   # reset; if I change the string to "\\033[94m", output shows actual color

    else:
        # if there is a color code present, should I replace "\\" with "\"?
        settings['column_head_color'][column] = settings['column_head_color'][column].replace("\\\\", "\\")



print("{}This is the group1".format(settings['column_head_color']['group1']))       # output shows the color code, but it does not actually format the text
print("{}This is the group2".format(settings['column_head_color']['group2']))       # output here works, because it was hard coded manually

Я попытался заменить два escape-символа одним, и я попытался использовать функцию repr(), но нет воспользоваться. Я зашел так далеко, что показал вывод, который выглядит примерно так:

>>> python main.py
\033[91mOutput

Для group2 цветовой код работает, потому что я вручную ввел код в сценарий. Но когда я читаю его в похожей строке для group1 из файла JSON, Python интерпретирует это не так. Как мне предложить моей python программе интерпретировать эту строку как цветовой код?

...