web-dev-qa-db-fra.com

Python écrit au format CSV ligne par ligne

J'ai des données auxquelles on accède via une requête http et qui sont renvoyées par le serveur dans un format séparé par des virgules. J'ai le code suivant:

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)

Le contenu du texte est le suivant:

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

Comment puis-je sauvegarder ces données dans un fichier CSV ... Je sais que je peux faire quelque chose dans le sens de ce qui suit pour itérer ligne par ligne:

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

Mais je ne sais pas comment écrire correctement chaque ligne au format CSV

EDIT ---> Merci pour le retour comme suggéré la solution était assez simple et peut être vue ci-dessous.

Solution:

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

Manière générale:

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

En utilisant 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

Manière la plus 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()
107
Ani Menon

Vous pouvez simplement écrire dans le fichier comme vous écrivez n'importe quel fichier normal.

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

Si juste au cas où, c’est une liste de listes, vous pouvez directement utiliser le module intégré csv

import csv

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

Je voudrais simplement écrire chaque ligne dans un fichier, car il est déjà au format CSV:

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

Je ne me souviens pas comment écrire des lignes avec des sauts de ligne pour le moment, cependant: p

Aussi, vous voudrez peut-être jeter un coup d’œil à cette réponse à propos de write(), writelines() et '\n'.

7
icedwater

Et ça:

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

str.join () Retourne une chaîne qui est la concaténation des chaînes dans iterable . Le séparateur entre les éléments est la chaîne fournissant cette méthode.

1
Vlad Bezden