>我在这样的字符串中有一个授权标头:
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]