我有一个密码,该密码在代码中解密时带有双井号##。这让python感到窒息,因为它似乎认为这是一条评论。我试过使用re.escape()函数,但不能逃脱双##。
有没有办法让python将整个字符串视为简单的字符串而已?
我正在连接到Rest URL以提取一些数据。它需要认证。
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只是一个从配置文件返回用户名和加密密码的函数。并且确实会正确返回密码,例如password ##。
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)
答案 0 :(得分:2)
事实证明这是网址编码问题。我通过这样做解决了。
import urllib.parse
urllib.parse.quote(ranger_admin_password)