Si vous avez besoin d'exclure toutes les colonnes , alors vous devez d'abord lire tout le fichier en mémoire - car ce n'est qu'après avoir vu chaque ligne que vous savez quelles colonnes ont des zéros! Ceci est un logique besoin - quelle que soit la langue que vous utilisez le besoin reste, il est intrinsèque au problème
Ainsi, par exemple:
allrows = list(reader)
Maintenant, allrows
est une liste de dictionnaires, dont les éléments sont des chaînes, vraisemblablement 0
ou 1
. Maintenant, vous pourriez faire:
keepcols = [c for c in allrows[0] if all(r[c] != '0' for r in allrows)]
... pas l'approche la plus rapide, mais j'espère très, très simple à comprendre!
Une fois que vous savez les colonnes que vous souhaitez conserver, préparer un DictWriter
exemple w
avec ces colonnes comme les en-têtes et l'argument extrasaction='ignore'
(il ignorera les touches « supplémentaires » dans les dicts qui lui sont transmis, et enfin
w.writerows(allrows)
Si vous voulez dire quelque chose de différent de « exclure toutes les colonnes qui ont des zéros en eux », alors s'il vous plaît préciser exactement ce que vous n'entendez par « je dois exclure les colonnes qui ont 0 » parce que je ne peux pas interpréter différemment
vous l'avez interprété correctement ... je veux dire "exclure toutes les colonnes qui ont des zéros en eux" .... mais je n'ai pas compris la partie extrasaction et en-têtes ... pl élaborer merci beaucoup ... :) – Anand
Pas grand chose à élaborer - il suffit de lire http://docs.python.org/library/csv.html?highlight=dictreader#csv.DictReader et d'utiliser 'fieldnames' pour ce que j'ai appelé' headers'. –
pl lire le code que j'ai écrit de ce que vous m'avez donné et aider ... im si mort .... – Anand