我有一个字节列表,我想要一个字符串列表

时间:2019-08-11 20:27:10

标签: python-3.x readlines

我想从URL中打开文件的第一行,搜索特定的字符串,然后分割该字符串。

    request=urllib.request.Request(url)
    response=urllib.request.urlopen(request)
    input_file=response.readlines()
    for l in input_file:
        if "target" in l:
           dum, stat = l.split(":")
           stat = stat.strip()

我希望获得stat =“ StationX” 相反,我得到

TypeError:需要一个类似字节的对象,而不是'str'

因为input_file是类型字节列表,而不是类型字符串列表。 我不知道如何将input_file作为字符串输入(我认为那是readlines()与read()的区别?)或将类型字节列表转换为类型字符串列表。

1 个答案:

答案 0 :(得分:0)

urllib.request软件包对此有一些细微差别,如下所示。有人可能期望.read()的返回类型是一个字符串,但实际上是必须解码的原始字节。

>>> import urllib.request
>>> req = urllib.request.Request("http://www.voidspace.org.uk")
>>> res = urllib.request.urlopen(req)
>>> raw_contents = res.read()
>>> type(raw_contents)
<class 'bytes'>
>>> page = raw_contents.decode()
>>> type(page)
<class 'str'>

现在就您而言

request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
raw_lines = response.readlines()
for raw_line raw_lines:
    line = raw_line.decode()
    if "target" in line:
       dum, stat = l.split(":")
       stat = stat.strip()

或者,

for line in map(lambda x: x.decode(), raw_lines):
    # etc