2014-10-17 2 views
2

У меня есть список, содержимое которого должно быть записано в файл csv, без цитаты.Python-Как использовать csv.writer без цитаты

содержимое этого списка, как показано ниже:

list=[(1, 2, 1), (1, 3, 1), (1, 4, 1), (1, 5, 1), (2, 1, 1), (2, 3, 1), (2, 4, 1), (2, 5, 1), (3, 1, 1), (3, 2, 1), (3, 4, 1), (3, 5, 1), (4, 1, 1), (4, 2, 1), (4, 3, 1), (4, 5, 1), (5, 1, 1), (5, 2, 1), (5, 3, 1), (5, 4, 1)] 

Теперь у меня есть фрагмент кода ниже двух, который пытается написать этот список в CSV файл:

Метод 1:

защиту method1():

list=[(1, 2, 1), (1, 3, 1), (1, 4, 1), (1, 5, 1), (2, 1, 1), (2, 3, 1), (2, 4, 1), (2, 5, 1), (3, 1, 1), (3, 2, 1), (3, 4, 1), (3, 5, 1), (4, 1, 1), (4, 2, 1), (4, 3, 1), (4, 5, 1), (5, 1, 1), (5, 2, 1), (5, 3, 1), (5, 4, 1)] 
myfile = open('output.csv', 'w') 
     wr = csv.writer(myfile, quoting = csv.QUOTE_NONE, delimiter=',', escapechar=',') 
     wr.writerow(list) 

Содержимое файла CSV приведены ниже:

(1,, 2,, 1),(1,, 3,, 1),(1,, 4,, 1),(1,, 5,, 1),(2,, 1,, 1),(2,, 3,, 1),(2,, 4,, 1),(2,, 5,, 1),(3,, 1,, 1),(3,, 2,, 1),(3,, 4,, 1),(3,, 5,, 1),(4,, 1,, 1),(4,, 2,, 1),(4,, 3,, 1),(4,, 5,, 1),(5,, 1,, 1),(5,, 2,, 1),(5,, 3,, 1),(5,, 4,, 1) 

Я не хочу, чтобы «» между элементами списка. Если я удалю escapechar из приведенного выше кода, это приведет к ошибке.

Ошибка:

_csv.Error: нужно бежать, но не escapechar не установлен

Способ 2:

четкости method2():

list=[(1, 2, 1), (1, 3, 1), (1, 4, 1), (1, 5, 1), (2, 1, 1), (2, 3, 1), (2, 4, 1), (2, 5, 1), (3, 1, 1), (3, 2, 1), (3, 4, 1), (3, 5, 1), (4, 1, 1), (4, 2, 1), (4, 3, 1), (4, 5, 1), (5, 1, 1), (5, 2, 1), (5, 3, 1), (5, 4, 1)] 
myfile = open('output.csv', 'wb') 
     wr = csv.writer(myfile) 
     wr.writerow(list) 

Выходной сигнал метода 2 как показано ниже:

"(1, 2, 1)", "(1, 3, 1)", "(1, 4, 1)", "(1, 5, 1)", "(2, 1, 1) "," (2, 3, 1) "," (2, 4, 1) "," (2, 5, 1) "," (3, 1, 1) "," (3, 2, 1) "," (3, 4, 1) "," (3, 5, 1) "," (4, 1, 1) "," (4, 2, 1) "," (4, 3, 1) "," (4, 5, 1) "," (5, 1, 1) "," (5, 2, 1) "," (5, 3, 1) "," (5, 4, 1) «

Может ли кто-нибудь помочь мне решить проблему?

Содержимое моего выходного файла должно выглядеть следующим образом:

(1, 2, 1), 
(1, 3, 1), 
(1, 4, 1), 
(1, 5, 1), 

... 
... 
+0

Если это ваш выходной формат, я не вижу большого преимущества использования модуля 'csv'. – monkut

+0

@monkut не могли бы вы сообщить мне, как я мог это сделать? – Varun

ответ

2

Вам не нужно CSV вообще, посмотрите на это:

>>> list=[(1, 2, 1), (1, 3, 1), (1, 4, 1), (1, 5, 1), (2, 1, 1), (2, 3, 1), (2, 4, 1), (2, 5, 1), (3, 1, 1), (3, 2, 1), (3, 4, 1), (3, 5, 1), (4, 1, 1), (4, 2, 1), (4, 3, 1), (4, 5, 1), (5, 1, 1), (5, 2, 1), (5, 3, 1), (5, 4, 1)] 
>>> with open('out.txt', 'w') as out: 
...  for t in list: 
...   out.write(str(t)+",\n") 
... 
>>> 
host:~$ head out.txt 
(1, 2, 1), 
(1, 3, 1), 
(1, 4, 1), 
(1, 5, 1), 
(2, 1, 1), 
(2, 3, 1), 
(2, 4, 1), 
(2, 5, 1), 
(3, 1, 1), 
(3, 2, 1), 
2

формат, который вы описали, кажется, не чтобы потребовать модуль csv. Вы можете просто записать формат, используя примерно следующее:

list=[(1, 2, 1), (1, 3, 1), (1, 4, 1), (1, 5, 1), (2, 1, 1), (2, 3, 1), (2, 4, 1), (2, 5, 1), (3, 1, 1), (3, 2, 1), (3, 4, 1), (3, 5, 1), (4, 1, 1), (4, 2, 1), (4, 3, 1), (4, 5, 1), (5, 1, 1), (5, 2, 1), (5, 3, 1), (5, 4, 1)] 

with open("output.csv", "w") as out_f: 
    for item in list: 
     output_str = "{},\n".format(item) 
     out_f.write(output_str) 
+0

удивительный, спасибо за быстрый ответ! Еще один вопрос, не могли бы вы сообщить мне, когда мне придется использовать модуль csv, а когда нет? Учитывая вышеприведенный случай, я много боролся! – Varun

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