解码以下字符串得到 URL
Decoding the following string to get URL
我正在尝试解码以下字符串:
b'\x08\x13"\xc2\xaf\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/\xc3\x92\x01\xc2\xb3\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
在 Python 3.6 中,但到目前为止还没有取得任何成功。
我需要获得第一个 link.
我尝试用 'cp1252'
、'UTF-8'
、'UTF-16'
和其他几个解码,但我的尝试没有成功。
知道如何做到这一点吗?
您的数据似乎是二进制字符串,其中看起来奇怪的 \x...
组件是二进制字符串前面和内部的 unicode 字符。您提到您需要获取第一个 link,我在您的示例中看到了两个不同的网址。
运行以下代码:
value = b'\x08\x13"\xc2\xaf\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/\xc3\x92\x01\xc2\xb3\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
print(value.decode('utf-8'))
产量:
"¯https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/Ò³https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/
您现在可以执行任何需要的字符串操作来获得第一个 link。
乍一看,我可以告诉您二进制部分是某种 header,其中包含有关数据的信息。不确定 header 中的每个数字,最后一个字节之前的数字包含 URL 长度。对于第一个 URL,长度为 0xAF,对于第二个 URL,长度为 0xB3:
>>> a = 'https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/'
>>> len(a)
175
>>> hex(len(a))
'0xaf'
>>> b = 'https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
>>> hex(len(b))
'0xb3'
>>>
我没有关于其余二进制数据的足够信息,我不知道当 URL 长度超过 255 时会发生什么,但对于您的字符串分析,我建议您找到http://
字符串,向后走2个字节,读取长度并提取整个URL,然后从提取的末尾重新开始URL:
c = 'your data which I dont copy again, but you should =)'
pos = 0
while True :
url_start = c.find( 'http', pos )
if url_start == -1 : break
url_length = ord(c[url_start - 2])
print 'start', url_start, 'length', url_length
print c[url_start:url_start + url_length]
pos = url_start + url_length
这将为您提供以下输出:
start 6 length 175
https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/
start 187 length 179
https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/
ps。如果你使用 python3,你可以使用带括号 print( ... )
的
我正在尝试解码以下字符串:
b'\x08\x13"\xc2\xaf\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/\xc3\x92\x01\xc2\xb3\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
在 Python 3.6 中,但到目前为止还没有取得任何成功。 我需要获得第一个 link.
我尝试用 'cp1252'
、'UTF-8'
、'UTF-16'
和其他几个解码,但我的尝试没有成功。
知道如何做到这一点吗?
您的数据似乎是二进制字符串,其中看起来奇怪的 \x...
组件是二进制字符串前面和内部的 unicode 字符。您提到您需要获取第一个 link,我在您的示例中看到了两个不同的网址。
运行以下代码:
value = b'\x08\x13"\xc2\xaf\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/\xc3\x92\x01\xc2\xb3\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
print(value.decode('utf-8'))
产量:
"¯https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/Ò³https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/
您现在可以执行任何需要的字符串操作来获得第一个 link。
乍一看,我可以告诉您二进制部分是某种 header,其中包含有关数据的信息。不确定 header 中的每个数字,最后一个字节之前的数字包含 URL 长度。对于第一个 URL,长度为 0xAF,对于第二个 URL,长度为 0xB3:
>>> a = 'https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/'
>>> len(a)
175
>>> hex(len(a))
'0xaf'
>>> b = 'https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
>>> hex(len(b))
'0xb3'
>>>
我没有关于其余二进制数据的足够信息,我不知道当 URL 长度超过 255 时会发生什么,但对于您的字符串分析,我建议您找到http://
字符串,向后走2个字节,读取长度并提取整个URL,然后从提取的末尾重新开始URL:
c = 'your data which I dont copy again, but you should =)'
pos = 0
while True :
url_start = c.find( 'http', pos )
if url_start == -1 : break
url_length = ord(c[url_start - 2])
print 'start', url_start, 'length', url_length
print c[url_start:url_start + url_length]
pos = url_start + url_length
这将为您提供以下输出:
start 6 length 175
https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/
start 187 length 179
https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/
ps。如果你使用 python3,你可以使用带括号 print( ... )
的