我的代码如下:
<-[r4:hasSimpleCapability]-(g:Devices) where g.reach >= 100 g.payload >= 100 g.repeatability >= 0.1
RETURN DISTINCT g
如何自动插入 AND
<-[r4:hasSimpleCapability]-(g:Devices) where g.reach >= 100 AND g.payload >= 100 AND g.repeatability >= 0.1
RETURN DISTINCT g
有用记得采纳
# -*- coding: UTF-8 -*-
import re
sql = """<-[r4:hasSimpleCapability]-(g:Devices) where g.reach >= 100 g.payload >= 100 g.repeatability >= 0.1
RETURN DISTINCT g"""
replace_list = re.findall(r'g\..*? ', sql)
if len(replace_list) >= 2:
for rep in replace_list[1:]:
sql = sql.replace(rep, "AND " + rep)
print(sql)
这种问题主要的思路就是有找出原字符串的规律,然后用指定的内容替换原字符串中的内容
写法也有很多种,用正则表达式,用字符串的切片,用replace.函数
建议你多练练关于字符串的算法题
你的原字符串在输出各个条件时就可以同步加入AND符号啊,甚至还有OR XOR等等的都可以啊,每输出一个条件,根据需求自动把关系符号加上,不要把整个源字符串输出完了再找规律加关系符号不是更好吗?
首先根据where关键字分割,然后拿到where后的字符串,把g.替换为 AND g. 就可以了,其他的or同理
from re import *
s = """<-[r4:hasSimpleCapability]-(g:Devices) where g.reach >= 100 g.payload >= 100 g.repeatability >= 0.1
RETURN DISTINCT g"""
res = re.sub(r'(?P<gru>(?<=\d)\s+g.)',lambda y: ' AND ' + y.group('gru'), s)
print(res)
data = """<-[r4:hasSimpleCapability]-(g:Devices) where g.reach >= 100 g.payload >= 100 g.repeatability >= 0.1
RETURN DISTINCT g
"""
splitString = ' where '
dataArray = data.split(splitString)
dataArray[1] = dataArray[1].replace(' g.', ' AND g.')
print(splitString.join(dataArray))
import re
s = """<-[r4:hasSimpleCapability]-(g:Devices) where g.reach >= 100 g.payload >= 100 g.repeatability >= 0.1
RETURN DISTINCT g"""
res = re.sub(r'(?P<gru>(?<=\d)\s+g.)',lambda y: ' AND ' + y.group('gru'), s)
print(res)
不知道你这个问题是否已经解决, 如果还没有解决的话: 使用replace机制 都指定位置了直接切开拼接不香吗