Tengo datos a los que se accede a través de una 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 como 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 sugeridos, la solución fue 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)
StringIO
importación, para ser honesto. Además, la solución tal como está probablemente no separa las líneas, yaf.write()
que no agrega nuevas líneas automáticamente.Respuestas:
Forma general:
O
Usando el escritor CSV:
O
Manera más sencilla:
fuente
with open(<path to output_csv>, "w", newline='') as csv_file:
for line in data:
. Por favor arregle eso. Gracias.'a'
(modo anexar) en lugar de'w'
(modo de escritura).Puede escribir en el archivo como lo haría con cualquier archivo normal.
Si por si acaso, es una lista de listas, puede usar directamente el
csv
módulo incorporadofuente
Simplemente escribiría cada línea en un archivo, ya que ya está en formato CSV:
Sin embargo, no recuerdo cómo escribir líneas con saltos de línea en este momento: p
Además, le gustaría echar un vistazo a esta respuesta acerca
write()
,writelines()
y'\n'
.fuente
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 coherencia y un código más limpio si tiene que tratar con varios archivos.
Uso de ejemplo:
Que te diviertas
fuente
¿Qué pasa con esto?
fuente