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中执行此操作?
接近它的一种方法是使用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)