Убедитесь, что список URL-адресов без части страницы всегда заканчивается косой чертой и точкой

#python

#python

Вопрос:

У меня действительно большой список URL-адресов, и я хотел бы добавить косую черту и точку ( /. ) ко всем URL-адресам, у которых нет части страницы. Вот несколько примеров того, чего я хотел бы достичь:

  • http://www.example.com должно быть http://www.example.com/.
  • http://www.example.com/index.htm все в порядке
  • http://www.example.com/. все в порядке
  • http://www.example.com/# должно быть http://www.example.com/.
  • http://www.example.com/something должно быть http://www.example.com/something/.

Одним из исключений является то, что hashes ( # ) также следует заменить точкой.

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

Спасибо

Комментарии:

1. 10 000 — не такое большое число, чтобы запускать его один раз. Это повторяющаяся задача?

2. Как вы теперь называете это something именем каталога? Очень возможно, что вы испортили URL-адрес, слепо добавив косую черту, если он не похож на имя файла.

3. ПРИВЕТ, Эриско. Это повторяющаяся задача. Я буду очень часто предоставлять эти данные в формате JSON и на разных наборах URL-адресов.

Ответ №1:

Под «частью страницы» вы, похоже, подразумеваете что-то с ‘.htm’ в конце (учитывая ваши 2-й и 5-й примеры), поэтому:

 url = url.rstrip('/#.')
if not url.endswith('.htm'):
    url  = '/.'
  

Комментарии:

1. .html .php , .asp , и т. Д.?

2. Этот список может стать длинным. Если вы не хотите использовать что-то вроде if '.' not in url.split('/')[-1] .