[英]Python - escaping || when splitting string with multiple delimiters
我正在尝试分割a && b || c && d || e
这样a && b || c && d || e
字符串 a && b || c && d || e
&&
和||
上的a && b || c && d || e
使用re.split。 我知道您可以通过执行re.split("a | b")
来使用多个定界符,但是我不知道如何实现: re.split("&& | ||")
。 我试图通过使用re.split("&& | \\\\|\\\\|")
来逃避管道,但是这不起作用。
我该如何正确逃避呢?
您需要转义 |
由于它具有特殊含义:
>>> import re
>>> s = "a && b || c && d || e"
>>> re.split(r"&&|\|\|", s)
['a ', ' b ', ' c ', ' d ', ' e']
并且,还要处理定界符周围的空格:
>>> re.split(r"\s(?:&&|\|\|)\s", s)
['a', 'b', 'c', 'd', 'e']
其中\\s
与空格字符匹配, (?:...)
是一个非捕获组 。
如果要拆分为单个元素,则str.translate可能会完成此工作:
s = "a && b || c && d || e"
print(s.translate(None,"&|").split())
这会给你:
['a', 'b', 'c', 'd', 'e']
或替换双|| 用&&然后拆分:
s = "a && b || c && d || e"
print(s.replace(" || "," && ").split(" && "))
或者,如果您想保持间距,则只需s.replace("||","&&").split("&&")
,无论您想要什么,都可以使用上面的一些变体或与str.strip结合使用。
这个正则表达式是否满足您的需求?
import re
r = re.compile("(?:&&|\|\|)")
r.split("a && b || c && d || e")
结果:
['a ', ' b ', ' c ', ' d ', ' e']
尝试这个
data = "a && b || c && d || e"
import re
spl = re.split("(?:\|\||&&)",data)
print spl
否则使用正则表达式否定查找全部
import re
data = "a && b || c && d || e"
data2 = re.findall("[^&|]{2}",data)
print data2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.