LINUX.ORG.RU

Регулярные выражения на бинарных данных

 , ,


0

1

Есть xml-подобный файл, внутри бинарные данные. Пытаюсь отпарсить его питоном re.findall(r"<file name=\"(.*?)\" dir=\"(.*?)\">(.*?)</file>",data) и получаю такую ошибку TypeError: cannot use a string pattern on a bytes-like object.

Гугл сказал надо xx.decode('utf-8'), но и это тоже не помогло UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa8 in position 169: invalid start byte.

Во что его надо сконвертировать чтобы получить данные?

★★★

Ответ на: комментарий от eternal_sorrow
TypeError                                 Traceback (most recent call last)
<ipython-input-100-c456a4f53703> in <module>
----> 1 re.findall(rb"<file name=\"(.*?)\" dir=\"(.*?)\">(.*?)</file>",xxx)

/usr/lib/python3.9/re.py in findall(pattern, string, flags)
    239 
    240     Empty matches are included in the result."""
--> 241     return _compile(pattern, flags).findall(string)
    242 
    243 def finditer(pattern, string, flags=0):

TypeError: cannot use a bytes pattern on a string-like object
dnb ★★★ ()