如何摆脱逗号?

问题描述 投票:0回答:3
import sqlite3

conn = sqlite3.connect('contacten.db')

c = conn.cursor()

#c.execute("""CREATE TABLE mail (
#           mail text
#           )""")

#c.execute("INSERT INTO mail VALUES ('[email protected]')")

conn.commit()

c.execute("SELECT * FROM mail")

print(c.fetchall())

conn.commit()
conn.close()

这是我编写的代码,结果得到:

[('[email protected]',), ('[email protected]',), ('[email protected]',)]

但是在此数组中,逗号太多了。 ,), 像这样。你们中有人知道如何摆脱这种多余的逗号吗?

python sqlite
3个回答
3
投票

逗号的存在是有充分的理由的,您的结果是元组列表;这是sqlite如何表示结果集的结果,数据本身不包含逗号:

result = c.fetchall()
print(result)
=> [('[email protected]',), ('[email protected]',), ('[email protected]',)]

那是因为每一行可以有多个字段。在您的情况下,您只有一个字段,但是Python不能仅删除逗号,因为如果这样做,您最终将得到方括号之间的元素列表,而不是元组列表(请参阅here以了解原因) 。

当然,如果您确定结果每行只有一个字段,则可以在打印结果时从每行中提取一个(唯一的)字段来简单地摆脱元组:] >

result = c.fetchall()
print([f[0] for f in result])
=> ['[email protected]', '[email protected]', '[email protected]']

2
投票

使用python zip


0
投票
import sqlite3                                                                                      

conn = sqlite3.connect('contacten.db')                                                              

c = conn.cursor()                                                                                   

#c.execute("""CREATE TABLE mail (                                                                       
#           mail text                                                                               
#           )""")                                                                                   
#c.execute("INSERT INTO mail VALUES ('[email protected]')")                                            
#c.execute("INSERT INTO mail VALUES ('[email protected]')")                                           
#c.execute("INSERT INTO mail VALUES ('[email protected]')")                                           

conn.commit()                                                                                       

c.execute("SELECT * FROM mail")                                                                     

#print(c.fetchall())                                                                                

for item in c.fetchall():                                                                           
    print item[0]                                                                                   

conn.commit()                                                                                       
conn.close()                                                                                        
© www.soinside.com 2019 - 2024. All rights reserved.