Как удалить U из sqlite3 cursor.fetchall () в Python - PullRequest
15 голосов
/ 01 июля 2011
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',)]

Мне нужно удалить u из массива, и мне нужен вывод, как показано ниже

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

Ответы [ 4 ]

23 голосов
/ 01 июля 2011

Если вам нужно, чтобы строки, извлеченные из вашей базы данных sqlite, возвращались как UTF-8 вместо Unicode, настройте ваше соединение соответствующим образом, используя свойство text_factory:

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

Это заботится о "u" перед вашими строками.Затем вам нужно будет преобразовать ваш список кортежей в список:

ar=[r[0] for r in cur.fetchall()]
10 голосов
/ 01 июля 2011

Префикс u указывает, что строка является строкой Unicode . Если вы уверены, что строка является базовой строкой ASCII, вы можете преобразовать строку Unicode в строку, отличную от Unicode, с помощью простого str().

Пример:

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()]

Где results - список кортежей, возвращаемых fetchall, а item - члены кортежей.

2 голосов
/ 01 июля 2011

вы говорите, что это строки в юникоде.чтобы напечатать список кортежей в указанном вами формате, вы можете использовать:

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

edit: // Пример для KIRAN с u и в наборе результатов:

>>> ar=[(u'u',), (u'u',), (u',,,u,,u,',)]
>>> myformat="['%s']"%"', '".join([t[0] for t in ar])
>>> print myformat
['u', 'u', ',,,u,,u,']
0 голосов
/ 29 апреля 2019

Я просто добавляю эту строку, и она работает

conn.text_factory = str
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...