从HTTP授权标头中删除"Bearer "的Pythonic方法是什么



>我在这样的字符串中有一个授权标头:

Bearer [myawesometoken]

我不想使用空格字符进行标记化,因为我想要求字符串"Bearer"位于字符串的开头

从字符串中仅返回令牌的pythonic方法是什么?

有没有像 PHPpreg_match()这样的正则表达式匹配函数? 这是蟒蛇的方式吗?

我认为最Pythonic的方法是使用内置的startswith方法进行str和字符串切片:

PREFIX = 'Bearer '
def get_token(header):
if not header.startswith(PREFIX):
raise ValueError('Invalid token')
return header[len(PREFIX):]

但是,我更愿意str.partition将标头标记为 3 元组:

PREFIX = 'Bearer'
def get_token(header):
bearer, _, token = header.partition(' ')
if bearer != PREFIX:
raise ValueError('Invalid token')
return token

假设您的授权字符串是

Bearer mytoken

然后你可以像这样提取令牌

import re
authorization_string="Bearer mytoken"
g = re.match("^Bearers+(.*)", authorization_string)
if g:
# ur token
print(g.group(1)
else:
print("No token")

字符串总是这种格式吗?

header_string = 'Bearer [myawesometoken]'
token = header_string[8:-1]

相关内容

最新更新