2014-10-04 2 views
1

Можно ли объединить следующие два оператора в один оператор?Объединение двух операторов в один оператор

f.write(",".join(str(cell) for cell in row)) 
f.write("\n") 
+0

Да, но я больше заинтересован в _why_ Вы хотите это. У вашего рабочего места нехватка символов новой строки? :-) – paxdiablo

+2

Вы считали использование ['csv'] (https://docs.python.org/2/library/csv.html) вместо этого? – jonrsharpe

ответ

2

Просто сцепить результат join с '\n'

f.write(",".join(str(cell) for cell in row) + '\n') 
2

Использование строки форматированием:

f.write("{}\n".format(",".join(str(cell) for cell in row))) 

Примечание, что это значительно медленнее, чем большинство других методов, в том числе два отдельные записи в соответствии с OP и старый (устаревший) стиль форматирования строки (например, f.write("%s\n", ...).

См. str.format() и Format String Syntax.

1

Зачем изобретать колесо? The csv module будет делать это для вас:

import csv 

rows = [['foo', 1, 2], ['bar', 3, 4]] 

with open("filename.csv", "w") as f: 
    writer = csv.writer(f) 
    writer.writerows(rows) 
0

В качестве альтернативы, вы можете сделать с моей оберточной библиотеки pyexcel:

import pyexcel 

rows = [['foo', 1, 2], ['bar', 3, 4]] 
w = pyexcel.Writer("file.csv") 
w.write_rows(rows) 
w.close() 

И документация here

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