Как удалить строку в Python, которая возвращается из Elasticsearch?

1

У меня есть индекс, где поле данных - это тип ключевого слова. Я храню строку, подобную этой:

[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?

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

  • 0
    Вы пробовали декодирование с помощью encoding = 'unicode_escape'? stackoverflow.com/a/14820462/3841261
  • 0
    Может быть, просто заменить все двойные обратные косые черты синглами?
Показать ещё 3 комментария
Теги:
python-3.x
elasticsearch

1 ответ

0

Я изменил идею, и я преобразовал строку в шестнадцатеричный, а затем сохранил это шестнадцатеричное значение в 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('\\\\', '\\')

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню