如何在Python中将元组转换为字符串?

时间:2012-01-02 20:19:08

标签: python tuples

在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

将这个嵌套元组转换为字符串的正确方法是什么?

4 个答案:

答案 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)