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

2024-10-03 13:31:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个字符串,该字符串需要包含特定的双引号和单引号字符,以便执行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\' "'

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


Tags: 字符串forsql表达式格式rdwhere字符
3条回答

您看到的是字符串的^{}。你知道吗

>>> 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确保字段名包含所用数据集的正确引号样式(有些使用双引号,有些使用方括号)。你知道吗

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

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

你不能只用三个引号吗?你知道吗

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

"Full_Street" = 'ALLENDALE RD'

相关问题 更多 >