如何在Elasticsearch返回的Python中解串字符串?

时间:2018-08-28 17:41:25

标签: python python-3.x elasticsearch

我有一个索引,其中 data 字段是关键字类型。我存储这样的字符串:

[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 :(得分: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('\\\\', '\\')

这不是我的问题的直接答案,但对我有用,所以也许您也会发现它有用。