(Python) Как я могу преобразовать строку байта в необработанную строку с двойной кавычкой как - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть этот байт, представленный в виде строки:

b'google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs'

Я хочу преобразовать его в необработанную строку, похожую на эту:

r'"google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs"

(без отображения r 'при печати )

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

Привет

Редактировать полный код:

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)

1 Ответ

0 голосов
/ 04 февраля 2020

Использование с первого ответа

Преобразование байтов в строку

Предположение

Требуется:

r "google-site-verify = pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs"

НЕ (что недопустимо):

r '"google-site-check pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs "

# Byte String
s = b'google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs'

# String
decode_s = s.decode('utf-8')

print(f"Byte string\n\t{s}\n\n")
print(f"Decoded Byte string\n\t{decode_s}\n")
print(f'Is decoded == Desired \n{decode_s==r"google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs"}' )

Выход

Byte string    
    b'google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs'

Decoded Byte string    
    google-site-verification=pFgmIQ6qK3YjcRAAhsKiPzmEiOVcynQslFMEba5lXvs

Is decoded == Desired
    True
...