【发布时间】:2021-10-01 08:16:19
【问题描述】:
我正在解析我的击键数据。它看起来像这样:
> key_data = 'stuff[up][left][return]end'
我想对字符进行标记,但将 [] 包围的修饰符视为单个标记。
> print(key_tokens)
['s','t','u','f','f','[up]','[left]','[return]','e','n','d']
我知道我可以这样做来找到封装的部分:
> key_tokens = re.split(r'([\[\]])', key_data)
> print(key_tokens)
['stuff','[','up',']','[','left',']','[','return',']','end']
我当然也可以这样做来分隔每个字符:
> key_tokens = [c for c in key_data]
> print(key_tokens)
['s','t','u','f','f','[','u','p',']','[','l','e','f','t',']','[','r','e','t','u','r','n',']','e','n','d']
我只是很难把它们放在一起。
编辑:现在我看到一个角落案例,其中左方括号用作文本。不幸的是,它没有被转义或任何东西。
> key_data = 'stuff[but[up][left][return]end'
> key_tokens = re.findall('\[.*?\]|.', key_data)
> print(key_tokens)
['s','t','u','f','f','[but[up]','[left]','[return]','e','n','d']
我想看到的是:
> print(key_tokens)
['s','t','u','f','f','[','b','u','t','[up]','[left]','[return]','e','n','d']
【问题讨论】:
-
以
key_tokens = re.split(r'([\[\]])', key_data)开头,然后重新组合括号。