Python中使用sqlite3实现循环的新行

Python中使用sqlite3实现循环的新行,python,sqlite,Python,Sqlite,我正在尝试创建一个小函数,用于打印我正在使用的数据库中的连续行。我现在写的东西做得很好,除了它是一团乱麻,“\n”被逐字解释,而不是实际创建一个新行 import sqlite3 conn = sqlite3.connect('database.db') database = conn.cursor() def textfromDB(text): for row in database.execute("SELECT * FROM table1 WHERE column1 = ?",

我正在尝试创建一个小函数,用于打印我正在使用的数据库中的连续行。我现在写的东西做得很好,除了它是一团乱麻,“\n”被逐字解释,而不是实际创建一个新行

import sqlite3
conn = sqlite3.connect('database.db')
database = conn.cursor()

def textfromDB(text):
    for row in database.execute("SELECT * FROM table1 WHERE column1 = ?", [text]):
        print row
        print "\n"

当您为sqlite查询打印
for
循环中的一行时,实际上您打印了一个元组。因此,您所讨论的换行符混乱是使用
print
表示元组的问题。如果您需要将具有逐字解释的
\n
的稀疏格式更改为普通文本,则必须将元组转换为字符串。您可以通过以下命令更改
打印行
来实现:

print(', '.join(map(str, row))) 
它所做的是将元组的所有元素连接到一个字符串中
map
函数确保元组的非字符串项(如
int
s)在
join
函数可以连接它们之前转换为字符串。如果元组中没有非
str
项,则可以省略
map
函数

此外,正如@timgeb在评论中指出的,您可以使用pretty print模块
pprint
。它不会将
\n
s更改为实际的换行符,但可以打印具有良好缩进和其他格式功能的元组。当调试使用长元组、列表、集合或dict的程序时,它可能非常有用。在您的情况下,需要首先导入pprint:

from pprint import pprint

然后使用
pprint(row)
而不是
print row
。有关更多详细信息,请参见pprint。

我相信您希望使用不带“\n”的打印。然后我们需要一个(模型)输入和所需的输出。@CannedSpinach输出还取决于您正在打印的行的类型。如果它是一个元组,那么在Python REPL中,它可以打印为带有“\n”的长行,而不是带有实际换行符的文本。如果您只从每一行(例如,行[0])打印一个文本值,而不是一个元组,那么它将如下所示nice@vrs谢谢,这真是妙不可言!通常,如果列表、元组或字典数据结构的打印方式不利于阅读,则应尝试
pprint.pprint()
以获得更好的格式输出。