Usando Python csv writer sin citas

Estoy tratando de escribir una lista de cadenas como abajo en un archivo separado por el delimitador dado.

res = [u'123', u'hello world'] 

Cuando bash dividir por TAB como abajo, me da la cadena con el formato correcto.

 writer = csv.writer(sys.stdout, delimiter="\t") writer.writerow(res) gives --> 123 hello world 

Pero cuando trato de dividir por espacio usando delimiter=" " , me da el espacio pero con comillas como abajo.

 123 "hello world" 

¿Cómo elimino las comillas? De modo que cuando uso el espacio como delimitador debería obtener 123 hello world .

EIDT : cuando bash usar la escapechar no hace ninguna comillas dobles. Pero en todas partes en mi testdata aparece un espacio, lo hace doble.

El comportamiento de las citas está controlado por los diversos argumentos de quoting proporcionados al escritor (o establecidos en el objeto Dialect si prefiere hacer las cosas de esa manera). La configuración predeterminada es QUOTE_MINIMAL , que no producirá el comportamiento que está describiendo a menos que un valor contenga su carácter delimitador, carácter de comillas o carácter de terminación de línea. Verifique dos veces sus datos de prueba: [u'123', u'hello'] no producirá lo que usted describe, pero [u'123', u' hello'] .

Puede especificar QUOTE_NONE si está seguro de que es el comportamiento que desea, en cuyo caso intentará escapar de las instancias de su carácter delimitador si configura un carácter de escape o, si no lo hace, emitirá una excepción.

Puede configurar csv.writer para que no cite nada con quoting=csv.QUOTE_NONE por ejemplo:

 import csv with open('eggs.csv', 'wb') as csvfile: spamwriter = csv.writer(csvfile, delimiter=' ', escapechar=' ', quoting=csv.QUOTE_NONE) spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 

Produce:

 Spam Spam Spam Spam Spam Baked Beans Spam Lovely Spam Wonderful Spam 

Si haces QUOTING_NONE también necesitas un carácter de escape.

¿Necesitas el csv lib? Solo únete a las cuerdas …

 >>> res = [u'123', u'hello'] >>> print res [u'123', u'hello'] >>> print " ".join(res) 123 hello