Python URL编码和取消排序

Python URL编码和取消排序,python,python-3.x,urllib,Python,Python 3.x,Urllib,我从网站地图和twitter上收集了一些链接。问题是有些链接是阿拉伯语的,如下所示: https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء 我正在尝试取消压缩twitter链接,并解码阿拉伯语编码的链接,以获得如下链接: https://www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-

我从网站地图和twitter上收集了一些链接。问题是有些链接是阿拉伯语的,如下所示:

https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء
我正在尝试取消压缩twitter链接,并解码阿拉伯语编码的链接,以获得如下链接:

https://www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1

如果您的目标是获取一个包含奇数字符的url,并将其转换为
%XX
格式,则可以使用python内置的
urllib
对链接进行解码:

>>> import urllib
>>> oddlink = 'https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء'
>>> goodlink = urllib.parse.quote(oddlink)
>>> print(goodlink)
https%3A//www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
请记住,它将在
https
之后将
解析为
%3A
。您可以手动覆盖此选项:

>>> goodlink = goodlink[0:5] + ':' + goodlink[6:]
>>> print(goodlink)
https://www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
或者,您可以将
添加为“安全”字符,这意味着
urllib.parse
将忽略它,并将其保留为:

>>> urllib.parse.quote(oddlink, safe='/:')
/
是安全字符的一部分,因为它是链接的一个非常重要的部分:

https://www.google.com/ #with slash
https:%2F%2Fwww.google.com%2F #without slash

默认情况下,
/
字符包含在安全字符中,但是在更改安全字符时,您需要确保包含它。

您面临什么问题?那么,当您试图编写代码来解决问题时发生了什么?当你说“问题是有些链接是阿拉伯语的,就像这个:”,为什么会造成困难?当你说“我正在尝试取消压缩的twitter链接并解码阿拉伯语编码的链接”时,你是否能够编写代码来取消压缩的twitter链接?代码的哪一部分实际上造成了困难?