【发布时间】:2020-02-03 17:01:56
【问题描述】:
我将这个字节表示为字符串:
b'google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs'
我想将其转换为如下所示的原始字符串:
r'"google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs"
(打印时不显示 r')
我用 replace 尝试过,但不知道如何让它工作。 也许有人可以在这里帮助我。
问候
编辑完整代码:
def decode_txt_rdata(rdata, rdlen):
"""decode TXT RR rdata into a string of quoted text strings,
escaping any embedded double quotes"""
txtstrings = []
position = 0
while position < rdlen:
slen, = struct.unpack('B', rdata[position:position+1])
s = rdata[position+1:position+1+slen]
s = '"{}"'.format(s.replace(b'"', b'"').decode())
txtstrings.append(s)
position += 1 + slen
return ' '.join(txtstrings)
【问题讨论】:
-
我想如果你有一个额外的单引号,即
r'"应该是r"。无论如何,您都可以使用 decode 功能,如b'google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs'.decode("utf-8")中所述here -
我使用
s = '"{}"'.format(s.replace(b'"', b'"').decode())转换为字符串,但它不会忽略\010 之类的反斜杠字符并将它们作为转义字符。当我使用 decode('unicode-escape') 时,原始字节字符串也会在反斜杠字符处发生变化。我不知道该怎么办... -
r'"google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs"似乎不是一个有效的字符串。 -
你试过
b'google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs'.decode(("utf-8")吗?如果是这样,结果是否与您想要的不同? -
它告诉我
'str' object has no attribute 'decode',当我在转换为字符串之前使用它时,我得到:google-site-verification=Y3dKKFu_H3cJ3l66OBt0QIUL3 Z6cXR0UxhulSdc28lY仍然带有换行符..