【问题标题】:Python list | How to remove parenthesis,quotes and commas in my list?Python 列表 |如何删除列表中的括号、引号和逗号?
【发布时间】:2017-12-08 14:21:46
【问题描述】:

从我的数据库中,我返回了一个要显示到我的 HTML 页面中的列表,但我的列表中有这个不需要的符号。我尝试使用split() 函数,但它不起作用。如何删除那些括号、逗号和引号。谢谢你的帮助

输出为:

[('cenomar',), ('cedula',), ('Birth Certificate',), ('Clearance',)]

我想要:

 [cenomar, cedula, Birth Certificate, Clearance]

这是我的 python 函数:

 @app.route('/')
    def search():
        conn=psycopg2.connect("dbname='forms' user='postgres' password='everboy' 
       host='localhost' port='5432'")
       cur=conn.cursor()
       cur.execute("SELECT name from form")
       rows=cur.fetchall()
       print(rows)
       return render_template("form.html",rows=rows)

【问题讨论】:

  • 您列出的每个元素似乎都是一个元组。您想获取元组中的数据吗?

标签: python python-3.x flask


【解决方案1】:

此行之后:rows=cur.fetchall() 添加这一行

rows=[i[0] for i in rows]

【讨论】:

    【解决方案2】:

    一个简单的解决方案是:

    输入:["('cenomar',)", "('cedula',)", "('Birth Certificate',)", "('Clearance',)"]

    rows = ["('cenomar',)", "('cedula',)", "('Birth Certificate',)", "('Clearance',)"]
    res = []
    for r in rows:
        res.append(r[2:-3]) # this line ignores the beginning bracket and open quote and the closing bracket, comma, and close quote
    print res
    

    输出:["cenomar", "cedula", "Birth Certificate", "Clearance"]

    发生的情况是,您遍历您的列表,并且对于每个项目,您只需使用字符串操作([n:m],其中n 是起始字符,@987654324 @ 是结束字符,在您的情况下,2 表示从 3 个字符开始字符串(忽略 ('),-3 表示将字符串剪切到结尾之前的 3 个字符(忽略)',))。

    编辑 1

    我注意到您的输入可能不是我上面的答案所暗示的字符串,如果您有一个元组("smth",),您可以简单地获取第一个元素。所以答案会变成:

    输入:[('cenomar',), ('cedula',), ('Birth Certificate',), ('Clearance',)]

    rows = [('cenomar',), ('cedula',), ('Birth Certificate',), ('Clearance',)]
    res = []
    for r in rows:
        res.append(r[0])
    print res
    

    输出:["cenomar", "cedula", "Birth Certificate", "Clearance"]

    为了便于理解,上面的实现写得很长,但也可以像这样翻译成更短的一行:

    rows = [i[0] for i in rows]
    

    希望这会有所帮助!

    【讨论】:

    • 这与问题的输入不同
    • @ingofreyer 我刚刚注意到并更新了我的答案。谢谢!
    • 谢谢,这看起来好多了:-)
    【解决方案3】:

    试试这个

    l = [('cenomar',), ('cedula',), ('Birth Certificate',), ('Clearance',)]
    b = []
    for i in l:
        b.append(i[0])
    print(b)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多