2015-09-10 154 views
-1

我有这个转换Unicode字符串到Python列表

x = "BA (Socialogy)", "DAE (Civil)", "MA (Internation Relation", "BS'c" 
print x 
<type 'unicode'> 

我想把它转换成Python列表这样

['BA (Socialogy)', 'DAE (Civil)','MA (Internation Relation)', 'BSc'] 

注意的X最后一个索引有 “BS'c” ,引用了如何处理这件事情。

UPDATE:

究竟是什么,我试图做的是从数据库中获取所有用户的学位头衔和在一个列表结合起来。

SELECT 
string_agg(distinct(E'\"'||title||E'\"'), ', ') as degree_titles, 
FROM education 
WHERE user_id = 5 
GROUP BY r.resume_id; 

关于python脚本。

try: 
     c = connection.cursor() 
     c.execute(sql_query) 
    except Exception as e: 
     print e 
    else: 
     rows = c.fetchall() 
     for row in rows: 
      print row[2] 
      print type(row[2]) 

如果我更新我的查询到这个,然后我得到这个它输出

"BA (Socialogy)", "DAE (Civil)", "MA (Internation Relation", "BS'c" 
<type 'unicode'> 

更多。

SELECT 
    string_agg(distinct(E'\''||title||E'\''), ', ') as degree_titles, 
    FROM education 
    WHERE user_id = 5 
    GROUP BY r.resume_id; 

那么我会得到这个

'BA (Socialogy)', 'DAE (Civil)', 'MA (Internation Relation', 'BS'c' 

然后,我用这个代码把它转换成列表

import ast 
x = ast.literal_eval('[' + str(row[2]) + ']') 

,并给出了语法错误:无效的语法上的'BS'c'

最后一个值
+0

我没有得到''请检查这个>>> x =“BA(Socialogy)”,“DAE(Civil)”,“MA(国际关系”,“BS” c“ >>> print x ('BA(Socialogy)','DAE(Civil)','MA(Internation Relation',”BS'c“) ' – Nilesh

+0

您可能会缺少一些代码部分,请给与完整的例子。 – Nilesh

+0

此字符串来自姿势数据库。这就是为什么它向我输出Unicode。 –

回答

0

请分割您的数据返回db

... 
... 
for row in rows: 
     split_data = [x.strip()[1:-2] for x in row[2].split(",")] 
     print split_data 
     print type(split_data) 
+0

现在它变成了这个''''BA(社会学)'','''DAE(Civil)','''MA(国际关系','BS'c “]' –

+0

@MTaqi,尝试新代码 – Nilesh

+0

@Mtaqi,这有效吗? – Nilesh