如何使用 re.split() 在两个字符的实例处拆分?

How to use re.split() to split at instances of two characters?

我有要拆分的字符串:

s = '|0-1|0.0|0.0+-0.0|0.8+-0.8|0.0+-0.0|-2.4+-2.4|5.9|'

我想在 |+- 的每个实例中拆分它,但不是 - 单独拆分。我正在尝试使用 re.split() 来执行此操作,因为常规 split() 函数不使用多个分隔符,但我无法弄清楚正则表达式语法。

我尝试了以下方法:

splitted = re.split(r'\| | (+-)', s)

上面说可以用圆括号来匹配圆括号中的表达式,但是我得到的错误是:

error: nothing to repeat

你可以做到

import re
s = '|0-1|0.0|0.0+-0.0|0.8+-0.8|0.0+-0.0|-2.4+-2.4|5.9|'
re.split("\||\+\-", s)

第二个 | 不应包含任何空格。 另请注意,返回的列表将包含空字符串,因为 s| 开始和结束。

只是为了好玩,你可以不用 regex

方法如下:

s = '|0-1|0.0|0.0+-0.0|0.8+-0.8|0.0+-0.0|-2.4+-2.4|5.9|'
print([j for i in s.split("|") for j in i.split("+-") if j])

输出:

['0-1', '0.0', '0.0', '0.0', '0.8', '0.8', '0.0', '0.0', '-2.4', '2.4', '5.9']