Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 连接包含多个引号的字符串会导致输出中出现斜杠_Python_Python 2.7_Arcgis - Fatal编程技术网

Python 连接包含多个引号的字符串会导致输出中出现斜杠

Python 连接包含多个引号的字符串会导致输出中出现斜杠,python,python-2.7,arcgis,Python,Python 2.7,Arcgis,我试图构建一个字符串,该字符串需要包含执行SQL表达式所需的特定双引号和单引号字符 我需要我的输出格式如下: " "Full_Stree" = 'ALLENDALE RD' " 其中ALLENDALE RD的值将是通过For循环定义的变量。在下面的代码示例中,变量tOS是我试图传递到查询变量中的内容 tOS = "ALLENDALE RD" query = '" "Full_Stree" = ' + "'" + tOS + "' " + '"' 当我打印查询变量的值时,我得到以下输出: '"

我试图构建一个字符串,该字符串需要包含执行SQL表达式所需的特定双引号和单引号字符

我需要我的输出格式如下:

" "Full_Stree" = 'ALLENDALE RD' "
其中ALLENDALE RD的值将是通过For循环定义的变量。在下面的代码示例中,变量tOS是我试图传递到查询变量中的内容

tOS = "ALLENDALE RD"
query = '" "Full_Stree" = ' + "'" + tOS + "' " + '"'
当我打印查询变量的值时,我得到以下输出:

'" "Full_Stree" = \'ALLENDALE RD\' "'
斜杠导致我的查询失败。我还尝试使用模运算符传递tOS变量的值,但得到了相同的结果:

where = '" "Full_Stree" = \'%s\' "' % (tOS)
print where
'" "Full_Stree" = \'ALLENDALE RD\' "'

我如何将字符串连接成正确的格式,而不在表达式中使用斜杠?

我已经尝试过的方法:

where = '" "Full_Stree" = \'%s\' "' % (tOS)
print where
'" "Full_Stree" = \'ALLENDALE RD\' "'

你看到的是你的绳子的长度

>>> s = '" "Full_Stree" = \'ALLENDALE RD\' "'
>>> s       # without print console displays the repr
'" "Full_Stree" = \'ALLENDALE RD\' "'
>>> print s # with print the string itself is displayed
" "Full_Stree" = 'ALLENDALE RD' "
真正的问题是where子句开头和结尾的额外引号

这个

应该是

query = '"Full_Stree" = ' + "'" + tOS + "'"
它更清楚地写为

query = """"Full_Stree" = '%s'""" % tOS
专家们建议采取类似的措施

dataset = '/path/to/featureclass/shapefile/or/table'
field = arcpy.AddFieldDelimiters(dataset, 'Full_Stree')
whereclause = "%s = '%s'" % (field, tOS)

arcpy.AddFieldDelimiters
确保字段名包含您正在使用的数据集的正确引用样式(有些使用双引号,有些使用方括号)。

您不能只使用三引号吗

a=""" "Full_Street" = 'ALLENDALE RD' """
print a

"Full_Street" = 'ALLENDALE RD'

这些是转义字符,它们是转义单引号字段名需要包含在双引号中,值需要包含在单引号中…这是用于SQL查询的吗?如果是这样的话,参数将使这变得更容易。正如您所发现的,以这种方式传递参数是很尴尬的。更重要的是。请学习正确地将参数传递给SQL,以放大@johnlaroy-AKAgnibbler所说的:不要这样做。这是一条悲伤和绝望的道路。处理SQL时,始终使用参数化查询。字符串连接的SQL:一次也没有。是的,这就是问题所在。然而,当我将该值作为表达式传递时,它似乎仍然失败。有没有办法告诉python忽略这些斜杠并发送不带斜杠的表达式?@csterling:如果将字符串传递给函数,则只传递字符串,而不传递其repr。我相信你的问题在别处;然而,解决这一问题的最好办法是根本不解决它。只需使用参数化语句。按照我更新的答案中的链接查看如何做到这一点。这并不完全符合我的需要。我正在使用SQL查询选择要素并更新GIS软件中的独立表。我需要ALLENDALE RD的值作为变量。我如何使用三重引号来实现这一点?您仍然可以使用+来集中字符串。
a=""" "Full_Street" = 'ALLENDALE RD' """
print a

"Full_Street" = 'ALLENDALE RD'