2017-01-13 5 views
0

У меня есть следующий список, где мне нужно записать содержимое списка в файл, разделенный символом табуляции. Я попробовал распечатать список, но я вижу, что квадратные скобки также появляются. Есть ли лучший способ написать это?Запись в файл в определенном формате с использованием python

list = ['a','b','c'] 
with open('file','wb') as outfile: 
    outfile.write(str(list)) 

Получаю вывод, как показано ниже.

['a', 'b', 'c'] 

Но мне нужен выход, как показано ниже без квадратных скобок, а также вставки табуляции между каждыми значениями списка.

'a'\t'b'\t'c' 
+1

'outfile.write (г«\ т».join (с для с в списке))' –

+2

Кроме того, не используйте 'list' в качестве имени переменной. Это зарезервированное встроенное имя для Python. Вместо этого переходите на что-то вроде 'lst'. –

+1

Я заметил, что вы сохраняете кавычки (например, '' a'' и т. Д.). Это намеренно? – tdelaney

ответ

0

Метод вы хотите str.join():

x = list("abc") # it's bad practice to shadow the list builtin 
print(x) # not what you want 
print("\t".join(x)) # almost there - just missing the single quotes 
print("\t".join("'{}'".format(c) for c in x)) # ta-da! 
0

Лучший способ зависит от того, какого рода данных у вас есть и то, что если что-то может прочитать его позже. Модуль CSV имеет дело с такими вещами, как экранирование разделителя в столбце (предположим, что у данных столбца есть вкладка), концы строк и столбцы цитирования. Это лучше всего может сюита ваши потребности

import csv 

data = ['a', 'b', 'c'] 
with open('file', 'w', newline='') as fp: 
    writer = csv.writer(fp, dialect='excel-tab', quotechar="'", 
     quoting=csv.QUOTE_ALL) 
    writer.writerow(data) 


# show result... 
print(repr(open('file').read())) 
Смежные вопросы