kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
Mustard Tiger
Mustard Tiger
Question

Python scrie în CSV linie cu linie

Am date care sunt accesate prin cerere http și sunt trimise înapoi de server într-un format separat prin virgulă, am următorul cod :

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)

Conținutul textului este următorul:

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

Cum pot salva aceste date într-un fișier CSV. Știu că pot face ceva de genul celor de mai jos pentru a itera linie cu linie:

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

Dar nu sunt sigur cum să scriu acum în mod corespunzător fiecare linie în CSV.

EDIT---> Mulțumesc pentru feedback, așa cum a sugerat soluția a fost destul de simplă și poate fi văzută mai jos.

Soluție:

import StringIO
s = StringIO.StringIO(text)
with open('fileName.csv', 'w') as f:
    for line in s:
        f.write(line)
78 2016-05-18T03:48:58+00:00 3
Mustard Tiger
Mustard Tiger
Întrebarea editată 14 mai 2018 в 6:22
Programare
file
csv
python
string
io
Această întrebare are 1 răspuns în engleză, pentru a le citi, vă rugăm să vă logați.
Solution / Answer
Ani Menon
Ani Menon
18 mai 2016 в 4:05
2016-05-18T04:05:33+00:00
Mai mult
Sursă
Editează
#30695050

Modul 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')

OR

Folosind CSV writer :

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)

OR

Cel mai simplu mod:

f = open('csvfile.csv','w')
f.write('hi there\n') #Give your csv text here.
## Python will convert \n to os.linesep
f.close()
 gsamaras
gsamaras
Răspuns editat 27 noiembrie 2018 в 3:50
144
0
 Vishwa
Vishwa
18 mai 2016 в 3:59
2016-05-18T03:59:14+00:00
Mai mult
Sursă
Editează
#30695049

Ați putea scrie în fișier așa cum ați scrie în orice fișier normal.

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

În cazul în care, pentru orice eventualitate, este vorba de o listă de liste, puteți utiliza direct modulul încorporat csv.

import csv

with open("csvfile.csv", "wb") as file:
    writer = csv.writer(file)
    writer.writerows(text)
13
0
 icedwater
icedwater
18 mai 2016 в 3:55
2016-05-18T03:55:08+00:00
Mai mult
Sursă
Editează
#30695048

Aș scrie pur și simplu fiecare linie într-un fișier, deoarece este deja în format CSV:

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

Nu-mi amintesc cum să scriu liniile cu întreruperi de linie în acest moment, totuși :p

De asemenea, poate doriți să aruncați o privire la acest răspuns despre write(), writelines() și '\n'.

 Community
Community
Răspuns editat 23 mai 2017 в 12:34
7
0
Comunități asemănătoare 1
Python România
Python România
127 utilizatori
Comunitatea pasionaților de Python din România.
Deschide telegram
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
ALEX EPRST
Înregistrat 14 ore în urmă
2
Daniel Gogov
Înregistrat 1 săptămână în urmă
3
工藤 芳則
Înregistrat 2 săptămâni în urmă
4
Ирина Беляева
Înregistrat 2 săptămâni în urmă
5
Darya Arsenyeva
Înregistrat 3 săptămâni în urmă
DE
EL
ES
FR
ID
IT
JA
KO
NL
NO
PT
RO
RU
SK
TR
ZH
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire