在Python中用字符串%s替换连接字符串列表

1 投票
2 回答
2917 浏览
提问于 2025-04-16 04:44

我有一个整数的列表,想把它们合成一个字符串

ids = [1,2,3,4,5]

这个字符串看起来像这样:'Id = 1 or Id = 2 or Id = 3 or Id = 4 or Id = 5'

我现在有了一个答案,但我觉得听听大家的意见可能会不错

编辑:给那些反对意见的人更多信息... 这并不是直接生成SQL语句,而是一个动态表达式,它会被发送到一个使用Entity Framework的Ado.net数据服务层。目前,服务中的动态表达式处理器/EF4适配器还不支持IN语句,所以我暂时只能使用多个等于的语句。

2 个回答

1
mystring = 'id =' + 'or id ='.join(str(i) for i in ids)

如果你想生成动态的 SQL 语句,就像评论里提到的那样(我不知道我怎么会错过这个),你应该这样做:

mystring = ' or '.join(['id = ?']*len(ids))  

这里的 ? 是要用你数据库库的适当转义序列来替换的。对于 sqlite3,使用 ?。对于 MySQLdb,记得的话,它使用 printf 代码。然后你可以把 id 的列表作为第二个参数(通常)传给游标,放在 SQL 字符串后面,这样就能安全地把它们放进去。这总是正确的做法。

5

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要将它们转换成程序能处理的格式。

比如说,如果你从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。为了让程序能够使用这些信息,我们可能需要将它们转换成数字、列表或者其他数据结构。这个过程就叫做“数据解析”。

数据解析的方式有很多种,具体取决于你要处理的数据类型和格式。有时候,数据可能是以JSON格式存储的,这是一种常见的数据交换格式。解析JSON数据通常比较简单,因为很多编程语言都有现成的工具可以帮助我们完成这个任务。

总之,数据解析就是把我们从外部获取的数据转换成程序可以理解和使用的形式,这样我们才能在程序中进行进一步的操作。

" or ".join("id = %d" % id for id in ids)

撰写回答