Как удалить u из sqlite3 cursor.fetchall() в python
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']
Ответы
Ответ 1
Если вам нужны, чтобы строки, полученные из вашей базы данных 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()]
Ответ 2
Префикс 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
- члены кортежей.
Ответ 3
u сообщает вам, что это строки Unicode. чтобы распечатать список кортежей в указанном вами формате, который вы могли бы использовать:
>>> myformat="['%s']"%"', '".join([t[0] for t in ar])
>>> print myformat
['arun', 'kiran', 'kulku', 'sugu']
изменить://
Пример для 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,']
Ответ 4
Я просто добавляю эту строку, и она работает
conn.text_factory = str