Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:尝试形成SQL语句时的字符串操作问题_Python - Fatal编程技术网

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

您所说的“此表单中的所有查询”是什么意思?您在这里谈论的是哪个
查询?抱歉,这意味着所有查询都遵循与提供的示例类似的结构。如果在=号之前有空格,则此操作将失败。此操作有效,请向上投票。向上投票来自内心。这是一个很好的解决方案