accélérer l'analyse des fichiers
cette fonction est très lent, prend ~ 6 secondes pour un fichier qui est relativement faible (moins de 30.000 lignes.)
comment puis-je accélérer?
def csv2dictlist_raw(filename, delimiter='\t'):
f = open(filename)
header_line = f.readline().strip()
header_fields = header_line.split(delimiter)
dictlist = []
# convert data to list of dictionaries
for line in f:
values = map(tryEval, line.strip().split(delimiter))
dictline = dict(zip(header_fields, values))
dictlist.append(dictline)
return (dictlist, header_fields)
en réponse aux commentaires:
Je sais qu'il ya un module csv et je peux l'utiliser comme ceci:
data = csv.DictReader(my_csvfile, delimiter=delimiter)
ce qui est beaucoup plus rapide. Cependant, le problème est qu'il ne convertit pas automatiquement les éléments qui sont évidemment des nombres flottants et des entiers en nombres et les transforme en chaînes. Comment puis-je réparer cela? L'utilisation de la classe "Sniffer" ne fonctionne pas pour moi. Quand je l'essayer sur mes fichiers, je reçois l'erreur:
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/csv.py", line 180, in sniff
raise Error, "Could not determine delimiter"
Error: Could not determine delimiter
Comment puis-je faire DictReader analyser les champs dans leurs types quand il est évident?
merci.
merci.
Vous savez qu'il y a un module ['csv'] (http://docs.python.org/library/csv.html) non? – kennytm
S'il y a un 'deadbeef' alors * évidemment * c'est une base 16 int, non? Python ne * devine pas *, toi non plus. –