【问题标题】:How to escape double pound sign '##' in python如何在python中转义双井号'##'
【发布时间】:2019-04-11 16:17:03
【问题描述】:

我有一个密码,当在代码中解密时有双井号##。这让 python 窒息,因为它似乎相信这是一条评论。我试过使用 re.escape() 函数,但这并没有逃脱双##。

有没有什么办法让python把整个字符串当作一个字符串,仅此而已?

我正在连接到一个休息 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)

【问题讨论】:

  • # 永远不会被视为开始评论。您能否分享一些代码来准确显示您的问题是什么?
  • x='##fart' print(x) 工作得很好
  • 按要求添加代码。
  • 在字符串中包含# 不会导致问题,还有其他问题
  • 你得到什么错误?

标签: python string escaping


【解决方案1】:

这原来是一个 url 编码问题。我通过这样做解决了它..

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2013-03-16
    • 2018-02-02
    • 1970-01-01
    相关资源
    最近更新 更多