如何在 python 中使用正则表达式从字节中提取单词?



我有一个字节:

b'\x1b\t\xff\xff

\xff\x7f@^\x8a?\x11\x00\x00\x00@\xe8HL\xbf\x19\x00\x00\x00\x00\x00\x95\xb0\xd9?\x127\r\xc9\xd5"=\x15\xc9\xd5"=\x1a+\x1a(\x1e\x12\x1c\x0f电影"\x07Bollard0\x01\x11\x00\x00\x00\x00\x00\x00\xf0? b'

\x1b\t\x01\x00\x00\x00\xa4\x9b\xb0\xbf\x11\x01\x00\x00\xc0/\xe3\x90?\x19\x01\x00\x00\xa0U\xc4\xef?\x127\r|\x934=\x15|\x934=\x1a+\x1a(\x1e\x12\x1c\x0f电影"\x07TV Series0\x01\x11\x00\x00\x00\x00\x00\x00\xf0?

使用正则表达式,我想提取单词(在本例中为"电影","电影"和"电视剧"(

我尝试过:

使用python正则表达式从字符串中提取单词

从字符串中提取单词,删除标点符号并返回包含分隔单词的列表

用于查找字符串中所有单词的 Python 正则表达式

通常,您会使用.decode()方法将字节转换为字符串。但是,您的字节包含的值不是 ASCII 或 UTF-8。

我的建议是遍历每个字节并尝试将其解释为 ASCII 值

raw= b'nx1btxffxffxffx7f@^x8a?x11x00x00x00@xe8HLxbfx19x00x00x00x00x95xb0xd9?x127rxc9xd5"=x15xc9xd5"=x1a+x1a)nx1ex12x1cnx0fMovies"x07Bollard0x01x11x00x00x00x00x00x00xf0?' b'nx1btx01x00x00x00xa4x9bxb0xbfx11x01x00x00xc0/xe3x90?x19x01x00x00xa0Uxc4xef?x127r|x934=x15|x934=x1a+x1a)nx1ex12x1cnx0fMovies"x07TV Series0x01x11x00x00x00x00x00x00xf0?'
string = ""
for b in raw:
string += chr(b)
print(string)

之后,您可以使用正则表达式方法来查找单词。定义单词的最小长度通常是一个好主意。

import re
for word in re.split('W', string):
if len(word) > 3:
print(word)

这将为您提供:

Movies
Bollard0
Movies
Series0

你没有提到"Bollard0",但我认为这是一个错误。

如果您希望空格成为字符串的一部分,则需要调整正则表达式。W在单词边界上拆分,空格被视为边界。