Python:格式化列表列表

时间:2014-11-06 23:06:59

标签: python django python-2.7

我是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'和'金额'在各个领域之前。我发誓我现在已经搜索了一周如何做到这一点,但我没有破解它。

2 个答案:

答案 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]