我正在尝试构建一个字符串,该字符串需要包含用于执行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\' "'
如何将字符串连接成正确的格式,将斜杠从表达式中删除?
答案 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'