2017-06-06 70 views
2

我目前正在做一個不和諧的機器人,其中的一個命令涉及從SQL表中拉數據,爲此我使用了與Pyodbc幾乎完全相同的AioOdbc模塊,唯一真正的區別是它不會在異步功能中阻塞。如何讓pyodbc輸出更具可讀性/更好?

以這種格式輸出。

[('Item1',),('Item2',)] 

我怎樣才能讓它輸出一些更好看的東西?可能類似於

Item1, Item2 

任何幫助表示讚賞!

回答

5

你可以把它變成,每一個項目是由逗號和空格這個代碼中分離出來的字符串:

itemString = ', '.join((item[0] for item in items)) 

items是這名:[('Item1',),('Item2',)]

如果你需要它能夠從任意深度嵌套列表,如在此列表中取出來的物品:[('Item1', 'Item2', ('Item3')), ('Item4', 'Item5')],您可以使用此代碼:

def flatten(nested): 
    for element in nested: 
     if isinstance(element, collections.Iterable) and not isinstance(element, (str, bytes)): 
      yield from flatten(element) 
     else: 
      yield element 
+0

考慮引用次「扁平化」代碼的來源。我相信原作者是David Beazley,詳情請參閱https://stackoverflow.com/a/40857703/4531270。 – pylang

+0

我很確定我寫了'flatten'代碼。 David的答案是在2016年11月,但我在2016年夏天寫了我的python工具包包的第一部分(我從中複製了這個包)。但我會大聲提出David的答案,因爲我認爲這是該問題的最佳答案。 –

+0

要清楚,我發佈的鏈接不是David Beazley的帖子,它是我的(所以不要高估它是他的)。我在這裏添加了鏈接,它提供了他的食譜(第三版,大約2013年)的完整參考資料,我從中得到了代碼的來源。這就是說,我不知道原作者。如果是你,謝謝你的配方。 – pylang