2012-01-02 2 views
4

После выбора заявления MySQL, я остался со следующим:Как преобразовать кортеж в строку в Python?

set([('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',)]) 

То, что я хотел бы иметь это

emaillist = "\n".join(queryresult) 

в конце концов, есть строка:

[email protected] 
[email protected] 
[email protected] 
etc 

Что было бы правильным способом преобразования этого вложенного кортежа в строку?

+0

попробовал новый = «\ n'.join (старое [0]), но получили TypeError:„установить“объект не поддерживает индексирование – Cmag

+0

Кармической -1 предположить только пижон бы ответить на ваш вопрос. – thumbtackthief

ответ

15

Пока вы будете уверены, что вам имеют только один элемент на кортеж:

'\n'.join(elem[0] for elem in queryresult) 
2

Попробуйте это и посмотреть

>>> something=set([('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',), ('[email protected]',)]) 
>>> print '\n'.join(''.join(s) for s in something) 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

Примечание, соединение может работать только на струнах, но элементы множества кортежи. Чтобы сделать работу соединения, вам нужно выполнить итерацию по набору, чтобы преобразовать каждый элемент в строку. Наконец, как только вы закончите, вы можете присоединиться к ним так, как пожелает ваше сердце.

На боковой ноте. Околичности способ сделать это :-)

>>> print "\n".join(re.findall("\'(.*?)\'",pprint.pformat(something))) 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
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

Понимание списка не нужно. Сделайте это выражением генератора и отбросьте парсеры, сохраните память, символы и время чтения: '" \ n ".join (item [0] для элемента в queryresult)'. – delnan

+0

хорошо пункт. Я отредактирую это в – rejj

Смежные вопросы