2014-02-11 38 views
1

我有打印如下一個Python變量(數據庫記錄):如何「解包」這個元組

((79321L, Decimal('11.56125119')),) 

什麼是打印這兩個值的最佳方法?我想做這樣的事情:

print("Count: {}, Result: {}".format(cur.fetchall())) 
+1

如果你只期待一個單列的結果,那麼就使用'fetchone()'代替,然後你不不得不擔心這個... –

回答

2
In [10]: a=((79321L, Decimal('11.56125119')),) 
#a[0] is a tuple, use "*" to unpack a tuple when passing it as parameters: 
In [11]: "Count: {}, Result: {}".format(*a[0]) 
Out[11]: 'Count: 79321, Result: 11.56125119' 

看到how to unpack argument lists,並format examples

或使用old %-formatting operator

In [13]: "Count: %s, Result: %s"%a[0] 
Out[13]: 'Count: 79321, Result: 11.56125119' 
+0

謝謝,但你能解釋'format(* a [0])嗎?我是Python新手,我以前沒有使用'*'。 – MountainX

+0

@MountainX更新;) – zhangxaochen

2

左側拆箱需要匹配右側的結構。因此,這將工作:

((x, y),) = ((79321L, Decimal('11.56125119')),) 

你有一個單項元組,其內容是兩個項目的元組

1

另一個選項,varitey:

value = ((79321L, Decimal('11.56125119')),) 
a, b = list(value)[0] 
+0

這裏只需'value [0]'就足夠了 - 不需要構建一個'list'來解開它 –

2

如果你只期待一個單列的結果,那麼就使用.fetchone()代替,然後你不必擔心拆包,如:

print('Count: {} Result: {}'.format(*cur.fetchone())) 

或者,如果你有更多的,然後遍歷光標:

for row in cur: 
    print('Count: {} Result: {}'.format(*row))