突出显示字符串中的某些字节

2024-09-27 21:25:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有如下清单:

\xeb\x1f\x5e\x31\xdb\x88\x5e\x07\x89\x76\x08\x89\x5e\x0c\x8d\x1e\x8d\x4e\x08\x8d\x56\x0c\x31\xc0\xb8\x0b\x00\x00\x00\xcd\x80\x31\xf6\xe8\xdc\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x41\x42\x42\x42\x42\x43\x43\x43\x43

我想在字符串中找到\x00\xcd\x80,并以高亮样式打印它。(例如红色)。我该怎么做?你知道吗


Tags: x00xffxcdx80x1fx0cx8dx89
1条回答
网友
1楼 · 发布于 2024-09-27 21:25:32

如果字符串sunescaped\是实数,字符),您可以使用:

print(s.replace(r'\x00','\x1b[31m\\x00\x1b[0m') \
       .replace(r'\xcd\x80','\x1b[31m\\xcd\\x80\x1b[0m'))

我们在这里要做的是寻找原始字符串r'\x00',并用'\x1b[31m\\\x00\x1b[0m'替换它。这意味着我们在它前面加上'\x1b[31m',即ANSI terminal escape code for red foreground,然后在它后面加上'\x1b[0m',即ANSI terminal escape code for dropping markup。你知道吗

如果我在控制台上用您的字符串运行此代码,我会得到:

enter image description here

这当然不是很方便。因此您可以使用:

def print_highlight(s,markers=(r'\x00',r'\xcd\x80')):
    for marker in markers:
        s = s.replace(marker,'\x1b[31m%s\x1b[0m'%marker)
    print(s)

所以现在可以给它一个字符串s,以及一个要突出显示的字符串片段列表。例如:

print_highlight(string,(r'\x31',))

将突出显示所有\x31部分。你知道吗

相关问题 更多 >

    热门问题