如何从python中的sqlite3 cursor.fetchall()中删除u

时间:2011-07-01 11:59:04

标签: python sqlite

import sqlite3
class class1:
def __init__(self):
    self.print1()
def print1(self):
    con = sqlite3.connect('mydb.sqlite')
    cur = con.cursor()
    cur.execute("select fname from tblsample1 order by fname")
    ar=cur.fetchall()
    print(ar)

class1()

给出如下所示的输出

[(u'arun',), (u'kiran',), (u'kulku',), (u'sugu',)]

我需要从数组中删除你,我需要输出如下所示

['arun', 'kiran', 'kulku', 'sugu']

4 个答案:

答案 0 :(得分:23)

如果您需要将从sqlite数据库检索到的字符串作为UTF-8而不是Unicode返回,请使用text_factory propery相应地设置连接:

import sqlite3
class class1:
def __init__(self):
    self.print1()
def print1(self):
    con = sqlite3.connect('mydb.sqlite')
    con.text_factory = str
    cur = con.cursor()
    cur.execute("select fname from tblsample1 order by fname")
    ar=cur.fetchall()
    print(ar)

class1()

详情请见: http://docs.python.org/library/sqlite3.html#sqlite3.Connection.text_factory

在你的琴弦前面照顾“你”。然后,您必须将元组列表转换为列表:

ar=[r[0] for r in cur.fetchall()]

答案 1 :(得分:10)

u前缀表示该字符串是Unicode字符串。如果您确定该字符串是基本的ASCII字符串,则可以将unicode字符串转换为具有简单str()的非unicode字符串。

示例:

unicode_foo = u"foo"
print unicode_foo
>>> u"foo"

print str(unicode_foo)
>>> "foo"

在你的情况下,使用元组列表,你必须使用python列表理解这样做:

ar = [[str(item) for item in results] for results in cur.fetchall()]

其中resultsfetchall返回的元组列表,而item是元组的成员。

答案 2 :(得分:2)

你告诉你这些是unicode字符串。以您指定的格式打印元组列表:

>>> myformat="['%s']"%"', '".join([t[0] for t in ar])
>>> print myformat
['arun', 'kiran', 'kulku', 'sugu']

编辑:// 使用u的KIRAN示例和结果集中的

>>> ar=[(u'u',), (u'u',), (u',,,u,,u,',)]
>>> myformat="['%s']"%"', '".join([t[0] for t in ar])
>>> print myformat
['u', 'u', ',,,u,,u,']

答案 3 :(得分:0)

我只需添加此行即可使用

conn.text_factory = str