我想分割以下字符串
string = "events.error > 5 AND timeseries.temperature < 20 OR variants.battery = 'Li' AND vehicle.name = 'Audi'"
在 AND 和 OR 位置,这样我就可以返回以下列表
list = ["events.error > 5", "AND", "timeseries.temperature < 20", "OR", "variants.battery = 'Li'", "AND", "vehicle.name = 'Audi'"]
我尝试了 string.split() 但组也被空格分割。您知道更好的方法吗?
最佳答案
最简单的方法是使用re.split
,将分隔符放在一个组中将使其保留在输出中:
import re
string = "events.error > 5 AND timeseries.temperature < 20 AND variants.battery = 'Li' AND vehicle.name = 'Audi'"
re.split(r'(AND)', string)
输出:
['events.error > 5 ',
'AND',
' timeseries.temperature < 20 ',
'AND',
" variants.battery = 'Li' ",
'AND',
" vehicle.name = 'Audi'"]
<小时/>
编辑:当您添加第二个分隔符“OR”时,更新版本:
import re
string = "events.error > 5 AND timeseries.temperature < 20 OR variants.battery = 'Li' AND vehicle.name = 'Audi'"
re.split(r'(AND|OR)', string)
输出:
['events.error > 5 ',
'AND',
' timeseries.temperature < 20 ',
'OR',
" variants.battery = 'Li' ",
'AND',
" vehicle.name = 'Audi'"]
如果您想删除字符串周围的空格,您可以在分隔符中包含任意数量的前导和尾随空格,但要在组之外,以便它们不会出现在输出中:
import re
string = "events.error > 5 AND timeseries.temperature < 20 OR variants.battery = 'Li' AND vehicle.name = 'Audi'"
re.split(r'\s*(AND|OR)\s*', string) # include the spaces in the separator,
# but don't keep them
输出:
['events.error > 5',
'AND',
'timeseries.temperature < 20',
'OR',
"variants.battery = 'Li'",
'AND',
"vehicle.name = 'Audi'"]
关于python - 在 AND 和 OR 处拆分字符串,保留分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59235130/