1

これはsqlite特有のものではありませんが、pythonとsqlite3を学習してクエリの結果を一覧表示しているときに疑問に思いました。私は簡単なコードを持っています:

connection = sqlite3.connect("db.sqlite")
cursor = connection.cursor()
cursor.execute("select * from db")
print cursor.fetchall()

したがって、の結果print cursor.fetchall()は次のとおりです。[(u'koko',), (u'lolo',)] しかし、このコードでその種の印刷物を再作成しようとすると:

i=["koko","lolo"]
print i

印刷結果は次のとおりです。['koko', 'lolo']

私が理解していない2つのこと:

  1. 印刷時に最初のリストにユニコードの「u」があり、2番目のリストにないのはなぜですか?
  2. (u'koko',)印刷時に最初のリストに括弧があり、2番目のリストにないのはなぜですか?

最初のリストはおそらくタプルのリストですか?

4

3 に答える 3

3

リストにはかっこがあります。これは、python がtuple.

対比:

a = 'foo'
print a,type(a)

と:

b = ('foo',)
print b,type(b)

また、python2.x にはさまざまな種類の文字列があることに注意してください。 unicodeは文字列の単なるタイプであり、python はそれを次のように表現することを選択しu'whatever'ます。

>>> print u'whatever'
whatever
>>> print repr(u'whatever')
u'whatever'

タプルの各要素をstr(tup)暗黙的に呼び出すことに注意してください。repr

于 2013-03-05T15:39:03.473 に答える
3

[(u'koko',), (u'lolo',)]Unicode 文字列の 1 要素タプルのリストです。

["koko","lolo"]バイト文字列のリストです。

于 2013-03-05T15:39:05.917 に答える
2

結果を操作して、必要な形式に適合させたい場合があります...

rows = cursor.fetchall()
result = [elem[0] for elem in rows]

...そして、(Python のバージョンに応じて) elem[0] に関数を適用して、文字列を必要な形式にすることもできます。

于 2013-03-05T15:43:33.803 に答える