Как правильно отформатировать строку в Python с несколькими {}, которые также нужно игнорировать? - PullRequest
0 голосов
/ 09 апреля 2019

Настройка поисковых запросов в Python для доступа к Splunk.Однако во время пробежек я столкнулся с IndexError: tuple index out of range.Я обнаружил в своем коде несколько {}, и попытка использовать .format для применения переменных как можно раньше и раньше вызывала указанную ошибку.

Я пытался переключиться на .format_map, но это вызывает больше ошибок, если я не сделал что-то не так.(Что может быть)

Я не могу изменить строку в коде.Поэтому я пытаюсь найти способы добавить переменные времени к строке для использования.

Вот вызовы переменных:

import _datetime_param
_earliest = _datetime_param.earliest()
_latest = _datetime_param.latest()

Работы по форматированию:

def eop():
    search_query = (
        'index="eop" sourcetype="eop:trace" Status="Quarantined" earliest={} latest={} | '
        'convert timeformat="%Y-%m-%d %I:%M:%S" ctime(_time) as Date | '
        'table Date src_ip src_user subject recipient | sort Date'
    ).format(_earliest, _latest)
    search_query.strip()
    if not (search_query.startswith('search') or search_query.startswith('|')):
        search_query = 'search ' + search_query
    return search_query

Форматирование приводит к ошибке:

def okta():
    search_query = (
        'index="okta" user!="CityADSync" action="failure" earliest={} latest={} | '
        'convert timeformat="%Y-%m-%d %I:%M:%S" ctime(_time) AS Date | dedup actors{}.ipAddress | '
        'rename actors{}.ipAddress AS IPAddress | rename actors{}.id AS Device | rename targets{}.id AS TargetID | '
        'rename targets{}.displayName AS TargetName| rename targets{}.login AS TargetLogin | '
        'table Date Device IPAddress TargetID TargetName TargetLogin | sort Date'
    ).format(_earliest, _latest)
    search_query.strip()
    if not (search_query.startswith('search') or search_query.startswith('|')):
        search_query = 'search ' + search_query
    return search_query

В def okata(): я не могу изменить search_query, так как он установлен таким образом, чтобы работать в Splunk.Поэтому я ищу способ чисто обработать оба пути, не сталкиваясь с ошибкой.Проще говоря, есть ли в Python способ игнорировать {}, который вы не хотите использовать?Если это .format_map, есть ли чистый способ сделать так, чтобы мне не хватало?

Заранее спасибо!

1 Ответ

0 голосов
/ 09 апреля 2019

Я могу использовать f String .

Ваша строка остается как:

string = f' a text {var} other text {other_var}'

...