Как избежать двойного знака фунта ‘##’ в python

#python #string #escaping

#python #строка #экранирование

Вопрос:

У меня есть пароль, который при расшифровке в коде имеет двойные знаки фунта, ##. Это душит python, поскольку он, похоже, считает, что это комментарий. Я пытался использовать функцию re.escape(), но это не позволяет избежать двойного ##.

Есть ли какой-либо способ заставить python обрабатывать всю строку как просто строку и ничего больше?

Я подключаюсь к URL-адресу rest, чтобы извлечь некоторые данные. Требуется аутентификация.

get_all_users_from_service_policy(ranger_host, get_connection_info('RANGER_API')[0], get_connection_info('RANGER_API')[1], cluster_name.cluster_name '_' service.service_name)

get_connection_info — это просто функция, которая возвращает имя пользователя и зашифрованный пароль из файла конфигурации. И он возвращает пароль правильно, например, пароль # #.

get_all_users_from_service_policy делает это:

 def get_all_users_from_service_policy(ranger_host, ranger_admin_user, ranger_admin_password, ranger_service, api_version="v2",
                                      ranger_port=6182):
    api_url = "https://{}:{}@{}:{}/service/public/{}/api/service/{}/policy".format(ranger_admin_user,
                                                                                   ranger_admin_password, ranger_host,
                                                                                   ranger_port, api_version,
                                                                                   ranger_service)
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    result = requests.get(api_url, auth=(ranger_admin_user, ranger_admin_password), verify=False)
    result = json.loads(result.content)
  

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

1. # в строке никогда не рассматривается как начало комментария. Не могли бы вы поделиться некоторым кодом, показывающим, в чем именно заключается ваша проблема?

2. x='##fart' print(x) работает просто отлично

3. Добавлен код по запросу.

4. наличие # в строке не вызывает проблем, что-то еще

5. Какую ошибку вы получаете?

Ответ №1:

Оказалось, что это проблема с кодировкой url. Я решил это, выполнив..

 import urllib.parse
urllib.parse.quote(ranger_admin_password)