如何使用2个拆分参数拆分字符串?

Rem*_*man 4 python regex split list python-3.x

例:

r="\\%4l\\%(wit.*wit\\)\\|\\%8l\\%(rood.*rood\\)\\|\\%12l\\%(blauw.*blauw\\)\\|\\%13l\\%(wit.*wit\\)\\|\\%14l\\%(blauw.*blauw\\)\\|\\%15l\\%(wit.*wit\\)\\|\\%16l\\%(wit.*wit\\)\\|\\%17l\\%(rood.*rood\\)\\|\\%19l\\%(wit.*wit\\)\\|\\%21l\\%(blauw.*blauw\\)"
Run Code Online (Sandbox Code Playgroud)

我想将字符串拆分为一个列表,但不使用1个参数而是使用2个参数.

  • 首先,我想先捕捉这个数字 l\\%(
  • 其次我想在\\%(和之间捕获文本,\\)\\|或者在\\%(和之间的字符串结尾处捕获文本\\)$

输出:

[[4, "wit.*wit"], [8, "rood.*rood"], [12, "blauw.*blauw"], [13, "wit.*wit"], [14, "blauw.*blauw"], [15, "wit.*wit"], [16,"wit.*wit"], [17, "rood.*rood"], [19, "wit.*wit"], [21, "blauw.*blauw"]]
Run Code Online (Sandbox Code Playgroud)

我尝试的是将字符串拆分为,\\|然后用每个不需要的字符替换"".

有没有更好的方法在Python中执行此操作?

ale*_*cxe 6

接近它的一种方法是使用re.findall()两个捕获组来找到所需的对:

In [3]: re.findall(r"%(\d+)l\\%\((.*?)\\\)", r)
Out[3]: 
[('4', 'wit.*wit'),
 ('8', 'rood.*rood'),
 ('12', 'blauw.*blauw'),
 ('13', 'wit.*wit'),
 ('14', 'blauw.*blauw'),
 ('15', 'wit.*wit'),
 ('16', 'wit.*wit'),
 ('17', 'rood.*rood'),
 ('19', 'wit.*wit'),
 ('21', 'blauw.*blauw')]
Run Code Online (Sandbox Code Playgroud)