簡體   English   中英

Python:格式化列表清單

[英]Python: Formatting lists of lists

我是Python的新手。 我下面的代碼基本上從MySql表中提取一些5行。

  if keyword.lower() == 'last5':
            cursor.execute('SELECT income_Ref, income_Amount FROM model_income WHERE company_MobileNumber = %s ORDER BY income_Datetime DESC LIMIT 5', [sender])
            result = cursor.fetchall()
            result = [list(row) for row in result]
            self.respond(result)
            return ()

self.respond()有點像print(),但它發送一條文本消息,我在格式化輸出時遇到麻煩。 我從上面的代碼中得到的是看起來像這樣的列表列表:

[[u'2014-11-06fd753b-inc',u'50.0'],[u'2014-11-067d724b-inc',u'50.0'],[u'2014-11-067557d6-inc',u '50 .0']]

我真的很希望我能有新的外觀:

Ref:2014-11-06fd753b-inc Amount:50.0 
Ref:2014-11-067d724b-inc Amount:50.0
Ref:2014-11-067557d6-inc Amount:50.0

這包括在每個相應字段之前添加“ Ref”和“ Amount”前綴。 我發誓我已經花了一周的時間來研究如何做到這一點,但我未能破解。

您可以使用:

self.respond("\n".join("Ref:{} Amount:{}".format(ref, amt) for ref, amt in result))

並不是真正的初學者資料,但是...

使用生成器將字符串(通過將"Ref:{} Amount:{}"格式化)創建為帶有"\\n"的字符串

if keyword.lower() == 'last5':
    cursor.execute('SELECT income_Ref, income_Amount FROM model_income WHERE company_MobileNumber = %s ORDER BY income_Datetime DESC LIMIT 5', [sender])
    result = cursor.fetchall()
    result = [list(row) for row in result]
    self.respond("\n".join("Ref:{} Amount:{}".format(ref, amt) for ref, amt in result))
    return ()

我離開列表理解result = [list(row) for row in result]因為我不知道fetchall()實際返回了什么。

輸出:

Ref:2014-11-06fd753b-inc Amount:50.0
Ref:2014-11-067d724b-inc Amount:50.0
Ref:2014-11-067557d6-inc Amount:50.0
["Ref:" + i[0][2:-1] + " Amount: " + i[1][2:-1] + "\n" for i in result]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM