2011-07-01 27 views
14
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() 

đưa ra một đầu ra như hình dưới đâylàm thế nào để loại bỏ u từ cursor.fetchall sqlite3() trong python

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

tôi cần phải loại bỏ u từ mảng và tôi cần đầu ra như hình dưới đây

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

Trả lời

2

u cho bạn biết rằng đây là những chuỗi unicode. để in danh sách các bản ghi trong các định dạng mà bạn chỉ định, bạn có thể sử dụng:

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

chỉnh sửa: // Ví dụ cho KIRAN với u, và trong tập kết quả:

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

tôi nghĩ rằng nó không phải là một method.please an toàn đề nghị khác one.'Thank bạn verymuch' –

+0

không an toàn bằng cách nào? – Gryphius

+0

nếu u và, xảy ra ở con trỏ ... –

9

Tiền tố u chỉ rằng chuỗi là một chuỗi Unicode. Nếu bạn chắc chắn rằng chuỗi là chuỗi ASCII cơ bản, bạn có thể chuyển đổi chuỗi unicode thành chuỗi không phải unicode với một đơn giản str().

Ví dụ:

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

print str(unicode_foo) 
>>> "foo" 

Trong trường hợp của bạn, với một danh sách các hàng, bạn sẽ phải làm như vậy với một danh sách python hiểu:

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

đâu results là danh sách các hàng trả lại bởi fetchallitem là các thành viên của bộ dữ liệu.

+0

vui lòng cho tôi giải thích cho 'ar = [str (mục [0]) cho mục trong cur.fetchall()] '__thank you__ –

+0

@ KIRAN: Tôi đã chỉnh sửa câu trả lời của mình để chuyển tất cả các mục được trả về bằng phương thức 'fetchall'. –

21

Nếu bạn cần mà chuỗi lấy từ cơ sở dữ liệu SQLite của bạn được trả lại như UTF-8 thay vì Unicode, thiết lập kết nối của bạn cho phù sử dụng propery 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() 

Xem này cho các chi tiết: http://docs.python.org/library/sqlite3.html#sqlite3.Connection.text_factory

Điều đó đảm nhận "u" trước dây của bạn. Sau đó bạn sẽ phải chuyển đổi danh sách các tuples vào một danh sách:

ar=[r[0] for r in cur.fetchall()] 
Các vấn đề liên quan