python 如何拆分http请求行?

python how to split http request line?

这是我的请求行示例:

GET https://example.com/hello?ageSelections=0&category=6000&productPeriodType=3&resourcePlace=resourcePlace AND 5089=5089-- PStU&twoCategory=6200 HTTP/1.1

我想拆分这个字符串并期待结果:

['GET', 'https://example.com/hello?ageSelections=0&category=6000&productPeriodType=3&resourcePlace=resourcePlace AND 5089=5089-- PStU&twoCategory=6200', 'HTTP/1.1']

谢谢:-)

您需要更精确地指定规范,例如它是否是字符串。但鉴于它是一个字符串,它应该看起来像:

string = GET https://example.com/hello?ageSelections=0&category=6000&productPeriodType=3&resourcePlace=resourcePlace AND 5089=5089-- PStU&twoCategory=6200 HTTP/1.1

data = string.split();

当然,如果它不是字符串,则不能这样做。

使用 str.partitionstr.rpartition 的两步法(也可以通过 str.splitstr.rsplit 每次使用 maxsplit=1 参数来完成):

line = 'GET https://example.com/hello?ageSelections=0&category=6000&productPeriodType=3&resourcePlace=resourcePlace AND 5089=5089-- PStU&twoCategory=6200 HTTP/1.1'
method, _, rest = line.partition(' ')
url, _, protocol = rest.rpartition(' ')
parsed_line = [method, url, protocol]