Какие символы делают URL недействительным?

Python 2:

  • raw_input() берет именно то, что пользователь набрал и передает в качестве строки.
  • input() сначала принимает raw_input(), а затем выполняет eval() на нем.

Основное отличие состоит в том, что input() ожидает синтаксически корректного оператора python, где raw_input() этого не делает.

Python 3:

  • raw_input() был переименован в input(), поэтому теперь input() возвращает точную строку.
  • Старый input() удален.

Если вы хотите использовать старый input(), то есть вам нужно оценить ввод пользователя в качестве инструкции python, вам нужно сделать это вручную, используя eval(input()).

469
задан Michał Perłakowski 4 April 2016 в 19:25
поделиться

4 ответа

Все допустимые символы, которые могут использоваться в URI (URL URL - это тип URI ), определены в RFC 3986 .

Все остальные символы могут использоваться в URL при условии, что они сначала «закодированы». Это включает изменение недопустимого символа для определенных «кодов» (обычно в форме символа процента (%), за которым следует шестнадцатеричное число).

Эта ссылка, Справочник по кодированию URL-адресов HTML , содержит список кодировок недопустимых символов.

11
ответ дан 22 November 2019 в 22:43
поделиться

Как правило, URI, как определено в RFC 3986 (см. Раздел 2: Символы ), могут содержать любой из следующих 84 символов:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=

Примечание что в этом списке не указано, где в URI могут встречаться эти символы.

Любой другой символ должен быть закодирован с использованием процентного кодирования (% hh ). Каждая часть URI имеет дополнительные ограничения на то, какие символы должны быть представлены словом, закодированным в процентах.

567
ответ дан 22 November 2019 в 22:43
поделиться

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

Регулярных выражений для определения URL-адресов предостаточно, погуглите :)

2
ответ дан 22 November 2019 в 22:43
поделиться

В дополнительном вопросе вы спросили, является ли www.example.com/file [/]. Html действительным URL-адресом.

Этот URL-адрес недействителен, потому что URL-адрес - это тип URI, а допустимый URI должен иметь схему вроде http: (см. RFC 3986 ).

Если вы хотели спросить, http: //www.example.com/file[/ provided.html является допустимым URL-адресом, тогда ответ все равно будет отрицательным, потому что символы квадратных скобок там недопустимы.

Символы квадратных скобок зарезервированы для URL-адресов в этот формат: http: // [2001: db8: 85a3 :: 8a2e: 370: 7334] / foo / bar (т.е. литерал IPv6 вместо имени хоста)

Стоит прочитать RFC 3986 внимательно, если хотите полностью разобраться в проблеме.

19
ответ дан 22 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: