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

15 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()
Run Code Online (Sandbox Code Playgroud)

给出如下所示的输出

[(u'arun',), (u'kiran',), (u'kulku',), (u'sugu',)]
Run Code Online (Sandbox Code Playgroud)

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

['arun', 'kiran', 'kulku', 'sugu']
Run Code Online (Sandbox Code Playgroud)

小智 24

如果您需要从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()
Run Code Online (Sandbox Code Playgroud)

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

这照顾你的弦前面的"你".然后,您必须将元组列表转换为列表:

ar=[r[0] for r in cur.fetchall()]
Run Code Online (Sandbox Code Playgroud)


Céd*_*ien 10

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

示例:

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

print str(unicode_foo)
>>> "foo"
Run Code Online (Sandbox Code Playgroud)

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

ar = [[str(item) for item in results] for results in cur.fetchall()]
Run Code Online (Sandbox Code Playgroud)

results返回的元组列表在哪里fetchall,并且item是元组的成员.


Gry*_*ius 2

u 告诉您这些是 unicode 字符串。要以您指定的格式打印元组列表,您可以使用:

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

edit:// 结果集中带有 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,']
Run Code Online (Sandbox Code Playgroud)