Python列表 | 如何删除我的列表中的括号、引号和逗号?

4

从我的数据库中返回一个列表,将其显示在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)

2
你的列表中似乎每个元素都是一个元组。你想要获取元组内部的数据,对吗? - ICanKindOfCode
3个回答

13
在这一行之后:rows=cur.fetchall(),添加这一行。
rows=[i[0] for i in rows]

1
一个简单的解决方案是:

输入: ["('cenomar',)", "('cedula',)", "('出生证明',)", "('清除',)"]

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", "出生证明", "清除"]

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

编辑1

我注意到您的输入可能不是字符串,如上面的答案所示,如果您有一个元组("smth",),则可以简单地获取第一个元素。 因此,答案将更改为:

输入: [('cenomar',), ('cedula',), ('出生证明',), ('清除',)]

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

输出: ["cenomar", "cedula", "出生证明", "清除"]

上述实现是为了易于理解而写的长代码,但也可以将其翻译成更短的一行代码,如下所示:

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

希望这能有所帮助!

1
这个输入与问题所提供的不同。 - ingofreyer
1
@ingofreyer 我刚刚注意到了并且已经更新了我的回答。谢谢! - N. Ivanov
谢谢,这看起来好多了 :-) - ingofreyer

0

试试这个

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接