Python格式错误(不支持)

Python格式错误(不支持),python,formatting,Python,Formatting,我正在用这个方法构建一个字符串。 但是由于某种原因,我得到了以下错误 ValueError: unsupported format character ''' (0x27) at index 38 我不知道这是从哪里来的。我检查了一下打字错误,但什么都没有 s = "SELECT %s FROM %s " data = [colName, tableName] if whereRoughly: s+= "(WHERE " for i in range(len(wher

我正在用这个方法构建一个字符串。 但是由于某种原因,我得到了以下错误

ValueError: unsupported format character ''' (0x27) at index 38
我不知道这是从哪里来的。我检查了一下打字错误,但什么都没有

s = "SELECT %s FROM %s "
data = [colName, tableName]

if whereRoughly:
    s+= "(WHERE "
        for i in range(len(whereRoughly[0])):
            s += "%s LIKE '%%s%' "
            if i+1 < len(whereRoughly[0]): s += "OR "
            data.append(whereRoughly[0][i])
            data.append(whereRoughly[1])
     s+= ")"

s += "ORDER BY %s;"
data.append("desc")

print s
print data
print s % tuple(data)
这是实际输出

SELECT %s FROM %s (WHERE %s LIKE '%%s%' OR %s LIKE '%%s%' )ORDER BY %s;
['*', 'students', 1, 'Wes', 2, 'Wes', 'desc']
问题在于:

"'%%s%'"
没有格式代码
%'
,尝试使用它会导致错误

>>> "'%%s%'" % "foo"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: unsupported format character ''' (0x27) at index 5
(见附件)

这是现代风格的清洁剂:


(此外,上面关于不使用
+=
构建字符串的评论是有效的——首选
格式
加入
)。

此外,您真的不应该在python中的字符串上使用
+=
。您应该正确使用
格式
连接
的组合。
>>> "'%%s%'" % "foo"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: unsupported format character ''' (0x27) at index 5
>>> "'%%%s%%'" % "foo"
"'%foo%'"
>>> "'%{0}%'".format('foo')
"'%foo%'"