问答详情
源自:4-2 python正则表达式练习

这个问题怎么解决啊

>>> listurl = re.findall(r'src=.+\.jpg',buf)

Traceback (most recent call last):

  File "<pyshell#18>", line 1, in <module>

    listurl = re.findall(r'src=.+\.jpg',buf)

  File "D:\Python\lib\re.py", line 213, in findall

    return _compile(pattern, flags).findall(string)

TypeError: cannot use a string pattern on a bytes-like object


提问者:qq__安若浮生_0 2016-12-14 12:04

个回答

  • missforever
    2016-12-14 17:37:25
    已采纳

    'r' 前面加个'b' 试试看

    listurl = re.findall(br'http:.+\.jpg', buf)     #python3中urllib.read()返回的是bytes对象

    有可能还需要的改动: 

    for url in listurl:

        f = open('i' + '.jpg', 'wb')                      #用 'wb' 格式打开

        url = url.decode('utf-8')                       #因为urlopen()需要的是string类型的参数

  • qq__安若浮生_0
    2016-12-14 19:18:15

    谢谢啦