Как удалить строку в Python, которая возвращается из Elasticsearch? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть индекс, где data field это ключевое слово type. Я храню строку, как эта:

[a-zA-Z0-9.]+\@[a-zA-Z0-9]+\.[a-zA-Z]+

но когда я возвращаю его в Python из Elastic, я получаю строку, подобную этой (потому что она хранится с экранированием в Elastic):

\\[a\\-zA\\-Z0\\-9\\.\\]\\+\\\\\\@\\[a\\-zA\\-Z0\\-9\\]\\+\\\\\\.\\[a\\-zA\\-Z\\]\\+

Как я могу вернуть его обратно в исходную форму в Python?

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

1 Ответ

0 голосов
/ 29 августа 2018

Я изменил идею и преобразовал строку в шестнадцатеричное, а затем сохранил это шестнадцатеричное значение в Elastic, потому что это обычная строка, которую не нужно экранировать, и затем, когда я читаю ее из Elastic, я просто возвращаю процесс следующим образом:

import binascii

# Convert string to hex
def toHex(text):
    return binascii.hexlify(bytes(text, 'utf-8')).decode("utf-8")

# Convert hex to string
def toStr(text):
    return binascii.unhexlify(bytes(text, 'utf-8')).decode("utf-8").replace('\\\\', '\\')

Это не прямой ответ на мой вопрос, но он работает для меня, так что, может быть, вы тоже найдете его полезным.

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