Преобразуйте строку с фигурными скобками, используя python - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующая строка:

{At condition {0}, the value of {1} must be between {2} and {3}.}{{code{min <= 100}}}{{code{min}}}{0}{100}

Как преобразовать любую аналогичную строку в формат ниже в python?

At condition `min <= 100`, the value of `min` must be between 0 and 100.

Числа в фигурных скобках следует заменить на соответствующие значения. Если значение заключено в {code{value}}, следует добавить специальные символы ''.

1 Ответ

1 голос
/ 17 июня 2020

Хорошо, это немного хрупко / беспорядочно, но это должно работать, учитывая предоставленную вами структуру.

def convert(s):
    # Find index  of first }{ as this is end of initial string
    idx = s.find('}{')
    initial = s[1:idx]
    # Everything after this index is an argument
    args = s[idx+2:-1]
    args = args.split('}{')
    # Iterate through args and subsitute into initial string
    for i, arg in enumerate(args):
        # Check to see if arg wrapped in {code{}}
        val_idx = arg.find('code{')
        if val_idx != -1:
            # Replace wrapped value with backticks
            arg = '`{}`'.format(arg[val_idx+5:-2])
        # Place arg into proper place in initial string
        initial = initial.replace('{{{}}}'.format(i), arg)

    return initial

Вызов:

convert('{At condition {0}, the value of {1} must be between {2} and {3}.}{{code{min <= 100}}}{{code{min}}}{0}{100}')
convert('{{0} bar}{foo}')

Возвращает:

At condition `min <= 100`, the value of `min` must be between 0 and 100.
foo bar
...