在MySQL select语句之后,我留下以下内容:
set([('1@a.com',), ('2@b.net',), ('3@c.com',), ('4@d.com',), ('5@e.com',), ('6@f.net',), ('7@h.net',), ('8@g.com',)])
我想要的是
emaillist = "\n".join(queryresult)
到最后,有一个字符串:
1@a.com
2@b.net
3@c.com
etc
将这个嵌套元组转换为字符串的正确方法是什么?
答案 0 :(得分:15)
只要您确定每个元组只有一个元素:
'\n'.join(elem[0] for elem in queryresult)
答案 1 :(得分:2)
试试这个,看看
>>> something=set([('1@a.com',), ('2@b.net',), ('3@c.com',), ('4@d.com',), ('5@e.com',), ('6@f.net',), ('7@h.net',), ('8@g.com',)])
>>> print '\n'.join(''.join(s) for s in something)
6@f.net
7@h.net
2@b.net
1@a.com
8@g.com
5@e.com
4@d.com
3@c.com
注意,join只能用于字符串,但是set的项目是元组。要使连接起作用,必须迭代集合以将每个项目转换为字符串。最后一旦完成,你可以按照你的心愿方式加入他们
旁注。一种环绕的做法: - )
>>> print "\n".join(re.findall("\'(.*?)\'",pprint.pformat(something)))
1@a.com
2@b.net
3@c.com
4@d.com
5@e.com
6@f.net
7@h.net
8@g.com
答案 2 :(得分:2)
符合
的列表理解[item[0] for item in queryresult]
应该有所帮助。例如,
emaillist = "\n".join([item[0] for item in queryresult])
..然而,这对queryresult的类型和结构做出了强有力的假设。
修改强>
生成器表达式甚至更好:
emaillist = "\n".join(item[0] for item in queryresult)
感谢@delnan的更新
答案 3 :(得分:1)
new = '\n'.join(x[0] for x in old)