#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)