我正在尝试使用python将HTTP
请求拆分为不同的块(每个块由一行分隔)
这是我的代码:
request='''GET / HTTP/1.1
Host: '+str(host)+':'+str(port)+'''
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive'''.splitlines(True)
当这个运行时,我得到了这个:
...
TypeError: cannot concatenate 'str' and 'list' objects
以任何方式,这是一个列表对象? 我在这里弄错了什么?
答案 0 :(得分:0)
str(host)
是一个字符串。 .splitlines()
返回list
- 对换行符进行拆分(多行字符串隐式包含这些字符)。
您收到错误是因为splitlines()
首先完成,只留下单独的字符串和list
。它们是不同的类型,显然你不能将它们加在一起。
您需要通过将整个连接字符串括在括号中来覆盖优先级。
答案 1 :(得分:0)
由于operator precedence,最后会评估最后一个.splitlines()
,然后你会得到一个你尝试追加字符串的字符串列表,这是不可能的。你必须用括号覆盖优先权。
答案 2 :(得分:0)
在连接运算符之前应用splitlines()
方法,因此您尝试将列表附加到语句开头的字符串中。在调用splitlines()
之前,将所有内容包装在()'中以形成整个字符串。