繁体   English   中英

Python-转义|| 用多个定界符分割字符串时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM