python - 在 AND 和 OR 处拆分字符串,保留分隔符

标签 python list split

我想分割以下字符串

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/

相关文章:

python - 使用递归选择偶数

java - 当我将一个列表子列出到多个新列表中时,我丢失了项目。如何在不丢失数据的情况下子列表?

IE7 中的 javascript 拆分正则表达式错误

python - 使用 Python split 将一个变量拼接在一起

c - 此 C 代码不断给我带来代码块段错误

python - PyCharm 5.0.1 不解析内置模块/方法

javascript - Python Flask 没有收到 AJAX 帖子?

python - 在 Pandas DataFrame 中使用 set_index

python:[[1,2],[3,4],[5,6],[7,8]] 转化为 [[1],[2,3],[4,5],[6,7 ],[8]] 反之亦然

python - 用于查找索引之间距离的列表换行