提取特定文本时出现问题(auto trader程序的请求令牌)

2024-10-01 07:40:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为algo交易开发一个python项目,因为我必须生成一个用于身份验证的请求令牌。可以从代理站点的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的其余部分是相同的。我很困惑它是如何每次生成不同的值的。请帮我摆脱困境


Tags: 代码httpscomtokenurlrequestmystatus
1条回答
网友
1楼 · 发布于 2024-10-01 07:40:14

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

相关问题 更多 >