这段代码中这两行是什么意思?
What do these two lines mean in this code?
[:http_payload.index("\r\n\r\n")+2]
中的“:”和“+2”是什么意思?
.split("/")[1]
中的"("/")"和"[1]"是什么意思?
def get_http_headers(http_payload):
try:
# split the headers off if it is HTTP traffic
headers_raw = http_payload[:http_payload.index("\r\n\r\n")+2]
# break out the headers
headers = dict(re.findall(r"(?P<name>.*?): (? P<value>.*?)\r\n", headers_raw))
except:
return None
return headers
def extract_image(headers, http_payload):
image = None
image_type = None
try:
if "image" in headers["Content-Type"]:
# grab the image type and image body
image_type = headers["Content-Type"].split("/")[1]
image = http_payload[http_payload.index("\r\n\r\n")+4:]
except:
pass
except:
return None, None
return image, image_type
http_payload[:http_payload.index("\r\n\r\n")+2]
slices 字符串 http_payload
这样只有字符串的头部到第一次出现的“\r\n\r\n”和第一个“[=25” =]”仍然存在。字符串的 .index()
方法将 return 字符串中模式首次出现的索引。
示例:
test = "abcdefg"
# slicing:
print(test[1:3]) # will output 'bc'
# index:
print(test.index('bc')) # will output 1 (index of start of substring 'bc')
# either start or end (or both) of the slice can be left out, so the following is equivalent:
print(test[:2] == test[0:2]) # will output True
.split("/")[1]
将在“/”字符和 return 一个列表中拆分一个字符串,从中可以访问索引为 1 的项目。
例如看下面的代码:
test = "/this/is/a/path"
print(test.split("/")) # will output ["this", "is", "a", "path"]
print(test.split("/")[0]) # will output "is" since element of index 1 of the resulting list is accessed.
[:http_payload.index("\r\n\r\n")+2]
中的“:”和“+2”是什么意思?
.split("/")[1]
中的"("/")"和"[1]"是什么意思?
def get_http_headers(http_payload):
try:
# split the headers off if it is HTTP traffic
headers_raw = http_payload[:http_payload.index("\r\n\r\n")+2]
# break out the headers
headers = dict(re.findall(r"(?P<name>.*?): (? P<value>.*?)\r\n", headers_raw))
except:
return None
return headers
def extract_image(headers, http_payload):
image = None
image_type = None
try:
if "image" in headers["Content-Type"]:
# grab the image type and image body
image_type = headers["Content-Type"].split("/")[1]
image = http_payload[http_payload.index("\r\n\r\n")+4:]
except:
pass
except:
return None, None
return image, image_type
http_payload[:http_payload.index("\r\n\r\n")+2]
slices 字符串 http_payload
这样只有字符串的头部到第一次出现的“\r\n\r\n”和第一个“[=25” =]”仍然存在。字符串的 .index()
方法将 return 字符串中模式首次出现的索引。
示例:
test = "abcdefg"
# slicing:
print(test[1:3]) # will output 'bc'
# index:
print(test.index('bc')) # will output 1 (index of start of substring 'bc')
# either start or end (or both) of the slice can be left out, so the following is equivalent:
print(test[:2] == test[0:2]) # will output True
.split("/")[1]
将在“/”字符和 return 一个列表中拆分一个字符串,从中可以访问索引为 1 的项目。
例如看下面的代码:
test = "/this/is/a/path"
print(test.split("/")) # will output ["this", "is", "a", "path"]
print(test.split("/")[0]) # will output "is" since element of index 1 of the resulting list is accessed.