我有一个索引,其中 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将其恢复为原始格式?
我试图将其存储为二进制类型字段并使用编码/解码,但基本上我也得到了相同的转义字符串。
答案 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('\\\\', '\\')
这不是我的问题的直接答案,但对我有用,所以也许您也会发现它有用。