2010-07-09 7 views

Répondre

0

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

+0

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

+0

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'. –

+0

pl lire le code que j'ai écrit de ce que vous m'avez donné et aider ... im si mort .... – Anand

0
reader = csv.DictReader(open("test1.csv", "r"), []) 

for data in reader: 
    if data[column header] != 0: 
     print data[column header] 
Questions connexes