write how python string file csv io

how - Python escribe en CSV línea por línea



write on csv file python (5)

Tengo datos a los que se accede mediante solicitud http y el servidor los devuelve en un formato separado por comas, tengo el siguiente código:

site= ''www.example.com'' hdr = {''User-Agent'': ''Mozilla/5.0''} req = urllib2.Request(site,headers=hdr) page = urllib2.urlopen(req) soup = BeautifulSoup(page) soup = soup.get_text() text=str(soup)

El contenido del texto es el siguiente:

april,2,5,7 may,3,5,8 june,4,7,3 july,5,6,9

¿Cómo puedo guardar estos datos en un archivo CSV? Sé que puedo hacer algo similar a lo siguiente para iterar línea por línea:

import StringIO s = StringIO.StringIO(text) for line in s:

Pero no estoy seguro de cómo escribir correctamente cada línea en CSV

EDITAR ---> Gracias por los comentarios que sugirió, la solución era bastante simple y se puede ver a continuación.

Solución:

import StringIO s = StringIO.StringIO(text) with open(''fileName.csv'', ''w'') as f: for line in s: f.write(line)


¿Qué hay de esto?

with open("your_csv_file.csv", "w") as f: f.write("/n".join(text))

str.join() Devuelve una cadena que es la concatenación de las cadenas en iterable. El separador entre elementos es la cadena que proporciona este método.


Forma general:

##text=List of strings to be written to file with open(''csvfile.csv'',''wb'') as file: for line in text: file.write(line) file.write(''/n'')

O

Usando el escritor CSV:

import csv with open(<path to output_csv>, "wb") as csv_file: writer = csv.writer(csv_file, delimiter='','') for line in data: writer.writerow(line)

O

La forma más simple:

f = open(''csvfile.csv'',''w'') f.write(''hi there/n'') #Give your csv text here. ## Python will convert /n to os.linesep f.close()


Para complementar las respuestas anteriores, preparé una clase rápida para escribir en archivos CSV. Hace que sea más fácil administrar y cerrar archivos abiertos y lograr consistencia y un código más limpio si tiene que lidiar con múltiples archivos.

class CSVWriter(): filename = None fp = None writer = None def __init__(self, filename): self.filename = filename self.fp = open(self.filename, ''w'', encoding=''utf8'') self.writer = csv.writer(self.fp, delimiter='';'', quotechar=''"'', quoting=csv.QUOTE_ALL, lineterminator=''/n'') def close(self): self.fp.close() def write(self, elems): self.writer.writerow(elems) def size(self): return os.path.getsize(self.filename) def fname(self): return self.filename

Ejemplo de uso:

mycsv = CSVWriter(''/tmp/test.csv'') mycsv.write((12,''green'',''apples'')) mycsv.write((7,''yellow'',''bananas'')) mycsv.close() print("Written %d bytes to %s" % (mycsv.size(), mycsv.fname()))

Que te diviertas


Podrías simplemente escribir en el archivo como escribirías cualquier archivo normal.

with open(''csvfile.csv'',''wb'') as file: for l in text: file.write(l) file.write(''/n'')

Si por si acaso, es una lista de listas, puede usar directamente el módulo csv incorporado

import csv with open("csvfile.csv", "wb") as file: writer = csv.writer(file) writer.writerows(text)


Simplemente escribiría cada línea en un archivo, ya que está en formato CSV:

write_file = "output.csv" with open(write_file, "w") as output: for line in text: output.write(line + ''/n'')

Sin embargo, no puedo recordar cómo escribir líneas con saltos de línea en este momento: p

Además, es posible que desee ver esta respuesta sobre write() , writelines() y ''/n'' .