[英]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.