J'ai un dictionnaire où item_dictionary[0]
correspond à data[0]
, et item_dictionary[1]
correspond à .Ecrire plusieurs fichiers .csv
item_dictionary = {'10350':'cat', '560':'dog'}
names = item_dictionary.values()
data = [[1, 2, 3, 4], [5, 6, 7]]
J'ai essayé d'écrire les articles dans data[0]
et à différents fichiers .csv comme ceci:
def writer(item):
q = data.index(item)
myfile = open('%r.csv', 'wb') % names[q]
wr = csv.writer(myfile)
wr.writerows(data[q])
myfile.close()
z = [writer(x) for x in data]
Cela renvoie l'erreur:
Traceback (most recent call last):
File "", line 1, in
File "", line 3, in writer
TypeError: unsupported operand type(s) for %: 'file' and 'str'`.
Je pense pour la 'str'
partie de l'erreur est que names[q]
renvoie, disons, 'cat'
au lieu de cat
. Cependant, je ne sais pas quel type d'opérande utiliser et je ne sais pas comment contourner le problème str
, donc quelqu'un pourrait-il m'aider s'il vous plaît? Merci.
Attention: en Python, les dictionnaires ne sont pas ordonnés et l'ordre dans lequel les éléments apparaissent dans '.values ()' est arbitraire. Il n'est donc pas vrai que "item_dictionary [0] correspond à data [0], et item_dictionary [1] correspond à data [1]" - il n'y a pas * 'item_dictionary [0]'. (Essayez-le et voyez - vous obtiendrez une KeyError.) Il existe un type de dictionnaire ordonné séparé, mais ce n'est pas ce que vous utilisez. – DSM
Merci pour les heads up. –