2016-05-18 26 views
27

ho dati che si accede tramite richiesta HTTP e viene inviato dal server in un formato separato da virgole, ho il seguente codice:Python scrittura alla linea CSV per riga

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) 

Il contenuto del testo è il seguente:

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

Come posso salvare questi dati in un file CSV. So che posso fare qualcosa sulla falsariga di quanto segue per iterare riga per riga:

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

ma io sono sicuri di come la società scrivere correttamente ogni linea in formato CSV

EDIT ---> Grazie per il feedback come suggerito la soluzione era piuttosto semplice e può essere visto sotto.

Soluzione:

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

È già un file CSV, devi solo scrivere ogni riga in un file ... – icedwater

+0

io non sono sicuro che nemmeno bisogno del StringIO' importazione ' , Ad essere onesti. Inoltre, la soluzione as-is probabilmente non separa le righe, dato che 'f.write()' non aggiunge automaticamente le newline. – icedwater

+0

@icedwater Capisco cosa stai dicendo, ma ho eseguito il codice sopra ed è stato in grado di memorizzare correttamente i dati in un file CSV. –

risposta

51

modo generale:

##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

utilizzando CSV scrittore:

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

modo più semplice:

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

Vorrei semplicemente scrivere ogni riga in un file, dal momento che è già in formato CSV:

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

Non riesco a ricordare come scrivere linee con line- pause al momento, però: p

Inoltre, come si potrebbe dare un'occhiata a this answer su write(), writelines() e '\n' .

5

si può solo scrivere il file come si può scrivere qualsiasi tipo di file normale.

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

Se solo nel caso, si tratta di una lista di liste, è possibile utilizzare direttamente il modulo incorporato csv

import csv 

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