如何将rstrip()放入元组列表中

时间:2014-08-21 14:06:24

标签: python

我有像

这样的代码
query_create_table += '%s %s,' % (ev_fields[i][0],ev_fields[i][1]).rstrip(',')

其中ev_fields是一个touples列表。我不想要','在最后一个字段。所以我使用rstrip()。但它抛出错误就像        AttributeError: 'tuple' object has no attribute 'rstrip' 我曾尝试将rstrip()放在其他地方,但它会引发语法错误。我如何在这里使用rstrip()?

5 个答案:

答案 0 :(得分:2)

您可能错过了一个括号:

>>> print ('%s %s,' % ("A", "B")).rstrip(',')
A B

或者简单地说:

>>> print '%s %s' % ("A", "B")
A B

如果这不是您的意思且问题在ev_field更深处,那么查看生成该列表的示例代码会有所帮助。


根据您的评论,可能正在寻找类似的内容:

s = ""
for i in range(5):
    s += '%s %s, ' % (str(i), str(10 * i))
s = s.strip(', ')

print s

输出:

0 0, 1 10, 2 20, 3 30, 4 40

可以使用join简化:

>>> print ', '.join('%s %s' % (str(i), str(10 * i)) for i in range(5))
0 0, 1 10, 2 20, 3 30, 4 40

答案 1 :(得分:1)

您需要为每个参数使用.rstrip(',')

query_create_table += '%s %s' % (ev_fields[i][0].rstrip(','),ev_fields[i][1].rstrip(','))

答案 2 :(得分:1)

如果这是循环所做的全部,您还可以使用join:

query_create_table = ",".join([ "%s %s" % (ev[0],ev[1]) for ev in ev_fields ]) 

答案 3 :(得分:0)

你可以使用它(如果我理解你的问题):

'%s %s,'.rstrip(',') % (ev_fields[i][0],ev_fields[i][1]).rstrip(',')

但是你不应该首先在python中使用+进行字符串连接。 使用生成器表达式或至少列表理解和join函数。

答案 4 :(得分:0)

rstrip()是一个字符串方法,而不是元组方法。试试这个

query_create_table += '%s %s,' % (ev_fields[i][0].rstrip(','), ev_fields[i][1].rstrip(','))

或者,您可能真的要删除,中的'%s %s,'。如果是这样,只需将其从字符串中删除而不需要rstrip(),即

query_create_table += '%s %s' % (ev_fields[i][0], ev_fields[i][1])

现在,忽略我刚才所说的内容,因为您似乎是通过字符串插值构建自己的字符串来构建SQL查询。您应该使用参数化SQL查询。而不是

query = "INSERT INTO table VALUES (%s, %s, %s)" % (var1, var2, var3)
cursor.execute(query)

你应该做这样的事情:

cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

其中%s是占位符(对于不同的数据库引擎,它可能不同,例如?)。这可确保正确转义和引用参数,从而减少出现SQL注入漏洞的可能性。