Регулярное выражение не работает в скрипте Python
Регулярное выражение не работает. пожалуйста, найдите детали ниже.
cpu_pattern = re.compile('.*CPU.*(usr|user).*nice.*sys.*')
part = b'11:40:24 AM CPU %usr %nice %sys %iowait %steal %irq %soft %guest %idle\n11:40:25 AM all 0.00 0.00 0.08 0.00 0.00 0.00 0.00 0.00 99.92'
Условие ЕСЛИ:
if cpu_pattern.search(part): if cpu_usage == '': cpu_usage == part
Ошибка:
TypeError('cannot use a string pattern on a bytes-like object')
2 ответа
Используйте приведенный ниже код для преобразования байта в строку в Python, который решит вашу проблему:
part= part.decode("utf-8")
Поместите код выше после part
объект
Выход print(part)
:
11:40:24 AM CPU %usr %nice %sys %iowait %steal %irq %soft %guest %idle
11:40:25 AM all 0.00 0.00 0.08 0.00 0.00 0.00 0.00 0.00 99.92
part
не строка, это последовательность байтов. Теперь у вас есть два варианта; что более уместно, зависит от того, какpart
было создано:
Выполняйте побайтовое сопоставление, а не сопоставление строк, используя шаблон последовательности байтов:
cpu_pattern = re.compile(b'.*CPU.*(usr|user).*nice.*sys.*')
Расшифровать
parts
последовательность байтов с использованием соответствующей кодировки, например UTF-8:parts_str = parts.decode('utf-8')