подставить параметры в утверждение - PullRequest
0 голосов
/ 02 июля 2018

Я читаю огромный лог-файл размером около 50 ГБ. Это куча запросов и параметров.

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

select this_.x as x, this_.y as y, this_.ACTION_ID as ACTION3_291_0_ from table where this_.id=$1 and this_.type=$2 and this_.id=$3
$1 = '4', $2 = 'cleanup', $3 = '2323'

ТАК для каждого запроса (выберите здесь) есть параметры, которые я хочу заменить. ($ 1, $ 2, $ 3)

итоговый запрос будет

select this_.x as x, this_.y as y, this_.ACTION_ID as ACTION3_291_0_ from table where this_.id='4' and this_.type='cleanup' and this_.id='2323'

Как это сделать в python. Я думаю о создании упорядоченного словаря из параметров (line2). Затем прочитайте каждое слово в строке 1 и, если в словаре есть значение для ключа (слова), замените его.

Определенно, должен быть более простой способ, чем этот. Ищу мысли.

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете создать словарь со списком сопоставлений, где ключ - это значение, которое вы хотите найти и заменить, а значение - это то, на что вы хотите заменить найденный ключ:

s = 'select this_.x as x, this_.y as y, this_.ACTION_ID as ACTION3_291_0_ from table where this_.id=$1 and this_.type=$2 and this_.id=$3'

mappings = {
    '$1': '4',
    '$2': 'cleanup',
    '$3': '2323'
}

# Loop through the dictionary, replacing every found occurency of they key with the value
for k, v in mappings.items():
    s = s.replace(k, v)

print(s)
>>> select this_.x as x, this_.y as y, this_.ACTION_ID as ACTION3_291_0_ from table where this_.id=4 and this_.type=cleanup and this_.id=2323

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...