Почему Python добавляет лишние символы в строку? - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно изменить только крошечный бит URL-адреса, но Python добавляет дополнительные вещи, в частности: биты ' amp; ', которые портят адрес URL, генерируя ошибку, как это делает URL не существует! Пример:

specialinfo = str(42)
my_url = 'https://www.justexample.com/thingshere/morestuff/ordinaryurlthing?mybit=' + specialinfo + '&endofmyurlbits'
print(my_url)

Я получаю:

https://www.justexample.com/thingshere/morestuff/ordinaryurlthing?mybit=42&endofmyurlbits

вместо того, что я ожидал:

https://www.justexample.com/thingshere/morestuff/ordinaryurlthing?mybit=42&endofmyurlbits

Если я исключаю ' https: 'бит работает! Пример:

specialinfo = str(42)
my_url = 'www.justexample.com/thingshere/morestuff/ordinaryurlthing?mybit=' + specialinfo + '&endofmyurlbits'
print(my_url)

Теперь я получаю:

www.justexample.com/thingshere/morestuff/ordinaryurlthing?mybit=42&endofmyurlbits

Я использую с:

with urllib.request.urlopen('https://'+my_url) as remote:
    data = remote.read()

И он работает. Однако остается вопрос! Почему добавление ' https: // ' в строку выполняет вышеупомянутое?

ps .: Я использую Python 3 с Jupyterlab в Windows 10.

1 Ответ

0 голосов
/ 05 августа 2020

Попробуйте следующее:

import html
html.unescape('https://www.justexample.com/thingshere/morestuff/ordinaryurlthing?mybit=42&endofmyurlbits')

Это должно сработать. Это происходит потому, что HTML принимает только utf-8 и пытается преобразовать все символы, отличные от utf-8. Вы можете отменить это, применив то, что я только что показал.

Надеюсь, это помогло

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...