Python:尝试形成SQL语句时的字符串操作问题
假设我有以下字符串:Python:尝试形成SQL语句时的字符串操作问题,python,Python,假设我有以下字符串: query = '''UPDATE table1 SET 'variable1' = 'value1', 'something' = "['bla', 'yada']", location = 'chicago' WHERE id = 9''' 这是一个字符串,我将使用它作为自定义库的参数来更新SQLite表。我需要做的是删除每个等号前单词周围的单引号(如果单词有单引号) 所需输出如下: query = '''UPDATE table1 SET var
query = '''UPDATE table1 SET 'variable1' = 'value1', 'something' = "['bla', 'yada']", location = 'chicago' WHERE id = 9'''
这是一个字符串,我将使用它作为自定义库的参数来更新SQLite表。我需要做的是删除每个等号前单词周围的单引号(如果单词有单引号)
所需输出如下:
query = '''UPDATE table1 SET variable1 = 'value1', something = "['bla', 'yada']", location = 'chicago' WHERE id = 9'''
请注意,单词“variable1”和“something”周围的单引号已被删除。如何对该表单中的所有查询执行此操作?如何使用逗号拆分查询。获取所有不同的字段
fields = query.split(", ")
然后用=
符号拆分每个字段
fields = [i.split("=") for i in fields]
然后删除单引号,但仅从赋值运算符的左侧删除
for f in fields:
f[0] = f[0].replace("'", "")
然后倒转并组合字符串
fields = ["=".join(f) for f in fields]
query = ", ".join(fields)
我会尝试以下方法:
words = query.split(" ")
new_query = ' '.join([words[i].replace("'", "") if words[i + 1] == '=' else words[i] for i in range(len(words) - 1)] + [words[len(words) - 1]])
您可以使用正则表达式来替换这些。正则表达式捕获单引号内的值(如果后跟空格和等号),然后仅用值替换引号和值
重新导入
query=''updatetable1 SET'variable1'='value1','something'=“['bla','yada']”,location='chicago',其中id=9''
更新的_query=re.sub(r“”([^']+)”(?=\s=)”,r“\1”,查询)
打印(查询)
打印(更新的查询)
输出
updatetable1集合'variable1'='value1','something'=“['bla','yada']”,位置='chicago',其中id=9
更新表1集合变量1='value1',something=“['bla','yada']”,位置='chicago',其中id=9
您所说的“此表单中的所有查询”是什么意思?您在这里谈论的是哪个查询?抱歉,这意味着所有查询都遵循与提供的示例类似的结构。如果在=号之前有空格,则此操作将失败。此操作有效,请向上投票。向上投票来自内心。这是一个很好的解决方案