1

我正在用 python 开发一个小实验来规范化 URL。/如果 URL 不存在,我的主要目的是在 URL 末尾添加斜杠。例如,如果是http://www.example.com,则应将其转换为http://www.example.com/

这是一个相同的小片段:

if url[len(url)-1] != "/":
        url = url + "/"

但这也会转换文件名。例如http://www.example.com/image.png进入http://www.example.com/image.png/哪个是错误的。我只想在目录中添加斜杠而不是文件名。我该怎么做呢?

提前致谢!

4

2 回答 2

0

您必须确保无论何时.出现 URL,对于目录,它都应该在主机名中。如果它在其他任何地方,它是一个文件名。因此,为此,只需url.count('.')检查它是否大于您主机名中的值(例如,此处等于 2)

if url.count('.') > 2:
    url = url if url[-1] != '/' else url[:-1]
else:
    url = url  if url[-1] == '/' else url + '/'
于 2014-12-24T18:43:28.770 回答
0

您可以对最后一个子字符串进行模式匹配,以检查已知域与文件扩展名。至少列举.com、.gov、.org 等基本顶级域并不难。

如果您熟悉常规扩展,则可以匹配'.com$'.

否则,你可以用'.'分割。并检查你得到的最后一个子字符串:

In [32]: url_png = 'http://www.example.com/image.png'

In [33]: url_com = 'http://www.example.com'

In [34]: domains = ['com', 'org', 'gov']

In [35]: for url in [url_png, url_com]:
   ....:     suffix = url.split('.')[-1]
   ....:     if suffix in domains:
   ....:         print url
   ....:
http://www.example.com

作为旁注,正如您在上面的示例中看到的那样,您不需要url[len(url)-1]索引列表的最后一个元素;Pythonic 方式就是url[-1].

于 2014-12-24T18:43:30.603 回答