提取特定文本时出现问题(自动交易程序的请求令牌)



我正在开发一个用于algo交易的python项目,因为我必须生成一个用于身份验证的请求令牌。可以从broker站点的url获取令牌。url看起来是这样的。我已经使用selenium提取了url。

https://zerodha.com/?request_token=**JZhT0vAv6L0ox9ZQdZCWhTWNUGLiLwXr**&action=login&status=success

突出显示的字母数字代码是请求令牌。我已经使用下面的代码提取它

My_url = 'https://zerodha.com/request_token=JZhT0vAv6L0ox9ZQdZCWhTWNUGLiLwXr&action=login&status=success'
print(My_url)
print(type(My_url))
A_strip= My_url.strip('https://zerodha.com/?request_token=')
print(A_strip)
request_token = A_strip.strip('&action=login&status=success')
print(request_token)
print(len(request_token))

预期输出为32个字符的文本:JZhT0vAv6L0ox9ZQdZCWhTWNUGLiLwXr

但每次代码的工作方式都不同。示例参考以下代码

My_url = 'https://zerodha.com/?request_token=HF4Bp4umtdFeC5n50auCA3DBim4N1Sto&action=login&status=success'
A_strip= My_url.strip('https://zerodha.com/?request_token=')
request_token = A_strip.strip('&action=login&status=success')
print(request_token)
print(len(request_token))

上面的输出预期是HF4Bp4umtdFeC5n50auCA3DBim4N1Sto,但我得到的是HF4Bp4umtdFeC5n50auCA3DBim4N1S,一个30个字符的文本输出。

除了令牌,其余的url部分都是相同的。我很困惑它是如何每次都产生不同的价值观的。请帮我摆脱困境

.strip()用于删除前导/尾随字符。您提供的参数不是要删除的序列,而是一组字符。

由于to在您提供的序列中,它们被从字符串的尾部删除,因为它们被视为尾随字符。删除在S处停止,因为此字母不在您提供的集合中。

如果你的代币以H以外的东西开头,例如ac等,它也会从前面删除,因为它会被视为主角。

要求解,您可以使用正则表达式,也可以简单地对字符串进行切片,因为您知道开始和结束的长度。

My_url = 'https://zerodha.com/?request_token=HF4Bp4umtdFeC5n50auCA3DBim4N1Sto&action=login&status=success'
prefix = 'https://zerodha.com/?request_token='
suffix = '&action=login&status=success'
token = My_url[len(prefix):-len(suffix)]
print(token, len(token))

最新更新