gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:17:22 27 4
gpt4 key购买 nike

我想分割以下字符串

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com