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

时间:2015-03-16 20:25:51

标签: python python-2.7 arcgis

我正在尝试构建一个字符串,该字符串需要包含用于执行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\' "'

如何将字符串连接成正确的格式,将斜杠从表达式中删除?

3 个答案:

答案 0 :(得分:2)

您看到的是字符串的repr

>>> 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" = ' + "'" + tOS + "'"

更明确地写为

query = """"Full_Stree" = '%s'""" % tOS

ArcGis docs推荐更像这样的内容

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

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

答案 1 :(得分:0)

不知怎的,我已经尝试过的方法了:

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

答案 2 :(得分:0)

你不能只使用三重引号吗?

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

"Full_Street" = 'ALLENDALE RD'