我是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'和'金额'在各个领域之前。我发誓我现在已经搜索了一周如何做到这一点,但我没有破解它。
答案 0 :(得分:0)
您可以使用:
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
答案 1 :(得分:-1)
["Ref:" + i[0][2:-1] + " Amount: " + i[1][2:-1] + "\n" for i in result]