我在这样的字符串中有一个Authorization标头:
JSESSIONID
我不想使用空格字符进行标记化,因为我想要求字符串“ Bearer”位于字符串的开头
仅从字符串中返回令牌的pythonic方法是什么?
是否存在像PHP Bearer [myawesometoken]
这样的正则表达式匹配功能?这会是Python的方法吗?
答案 0 :(得分:1)
假设您的授权字符串为
Bearer mytoken
然后您可以像这样提取令牌
import re
authorization_string="Bearer mytoken"
g = re.match("^Bearer\s+(.*)", authorization_string)
if g:
# ur token
print(g.group(1)
else:
print("No token")
答案 1 :(得分:1)
我认为,最Python化的方法是使用str
和startswith
的内置string slicing方法:
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
答案 2 :(得分:0)
字符串是否始终采用这种格式?
header_string = 'Bearer [myawesometoken]'
token = header_string[8:-1]