从数据库中删除Python中的unicode?

时间:2015-03-07 00:14:43

标签: python database sqlite flask

我有一个Flask网站,我想将SQLite3表中的值列表分配给变量。我设法做到了这一点,但是列表中的每个项目都显示了这样的值:[u'Chemistry']但是我只是希望它显示'Chemistry'。

这是我的代码:

cur = g.db.execute("SELECT DISTINCT subject FROM questions")
subjectList = [list(row) for row in cur.fetchall()]

我寻找的答案包括在行周围使用str()转换为字符串并将值列的类型更改为Blob但不起作用。我该如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:1)

当您查询SQLite时,您将获得类似于

的结果
[('value 1',), ('value 2',)]

然后使用列表推导,将每个记录转换为列表。这样就可以得到像

这样的东西
[['value 1'], ['value 2']]

相反,您可能希望从结果中的每个元组中提取第一个项目以获得所需的列表。

subjectList = [row[0] for row in cur.fetchall()]

这会让你

['value 1', 'value 2']

使用此版本的subjectList,您可以在模板中使用以下内容。

{% for subject in subjectList %}
    {{ subject }}
{% endfor %}

答案 1 :(得分:0)

尝试使用encode:

>>>a = u'test'
>>>a
u'test'
>>> a.encode('ascii')
'test'

您的代码:

subjectList = [list(row) for row in cur.fetchall()]

列表理解是将输出转换为列表:list(row)
如果你把它改成

怎么样?
subjectList = [row.encode('ascii') for row in cur.fetchall()]