J'essaie de créer un fichier csv contenant le contenu d'une liste de chaînes en Python, à l'aide du script ci-dessous. Cependant, lorsque je vérifie mon fichier de sortie, il s'avère que chaque caractère est délimité par une virgule. Comment puis-je demander au CSV.writer de délimiter chaque chaîne de la liste plutôt que chaque caractère? Dans ce cas, j'utilise Python 2.6 sur Snow Leopard.
J'ai vérifié le guide Python et je n'ai rien trouvé de spécifique:
http://www.python.org/dev/peps/pep-0305/#managing-different-dialects
import csv
# Define Data
RESULTS = ['Apple','cherry','orange','pineapple','strawberry']
# Open File
resultFyle = open("output.csv",'wb')
# Create Writer Object
wr = csv.writer(resultFyle, dialect='Excel')
# Write Data to File
for item in RESULTS:
wr.writerow(item)
La méthode csv.writer
writerow
prend un argument itérable. Votre jeu de résultats doit être une liste (lignes) de listes (colonnes).
csvwriter.writerow(row)
Ecrivez le paramètre de ligne dans l’objet fichier de l’écrivain, formaté en fonction du dialecte actuel.
Faire soit:
import csv
RESULTS = [
['Apple','cherry','orange','pineapple','strawberry']
]
with open("output.csv",'wb') as resultFile:
wr = csv.writer(resultFile, dialect='Excel')
wr.writerows(RESULTS)
ou:
import csv
RESULT = ['Apple','cherry','orange','pineapple','strawberry']
with open("output.csv",'wb') as resultFile:
wr = csv.writer(resultFile, dialect='Excel')
wr.writerow(RESULT)
Très simple à corriger, il vous suffit de transformer le paramètre en writerow dans une liste.
for item in RESULTS:
wr.writerow([item,])
Je sais que je suis un peu en retard, mais quelque chose qui fonctionne (et ne nécessite pas l'utilisation de csv
) consiste à écrire une boucle for qui écrit dans votre fichier pour chaque élément de votre liste.
# Define Data
RESULTS = ['Apple','cherry','orange','pineapple','strawberry']
# Open File
resultFyle = open("output.csv",'w')
# Write data to file
for r in RESULTS:
resultFyle.write(r + "\n")
resultFyle.close()
Je ne sais pas si cette solution est meilleure que celles déjà proposées, mais elle reflète plus fidèlement votre logique d'origine et j'ai donc pensé partager.
Exemple - écrivez plusieurs lignes avec une colonne booléenne (utilisez l'exemple ci-dessus de GaretJax et Eran?).
import csv
RESULT = [['IsBerry','FruitName'],
[False,'Apple'],
[True, 'cherry'],
[False,'orange'],
[False,'pineapple'],
[True, 'strawberry']]
with open("../datasets/dashdb.csv", 'wb') as resultFile:
wr = csv.writer(resultFile, dialect='Excel')
wr.writerows(RESULT)
Résultat:
df_data_4 = pd.read_csv('../datasets/dashdb.csv')
df_data_4.head()
Sortie:
IsBerry FruitName
0 False Apple
1 True cherry
2 False orange
3 False pineapple
4 True strawberry