Il serait assez facile à faire à l'aide de la csv du module DictReader et DictWriter classes. Voici un exemple qui lit l'ancien fichier et écrit du nouveau dans le passe unique.
Un DictReader instance renvoie à chaque ligne logique ou de la ligne du fichier comme un dictionnaire dont les clés sont les noms des champs. Vous pouvez spécifier explicitement les noms de champ ou ils peuvent être lus à partir de la première ligne du fichier, comme illustré dans l'exemple.
Vous doit pour spécifier les noms de champ lors de la création d'un DictWriter instance et l'ordre des noms de champ définit l'ordre dans lequel ils apparaîtront sur chaque ligne du fichier de sortie. Dans ce cas, le nom du champ est simplement ajouté au début de la liste de noms à partir du fichier d'entrée — quels qu'ils soient.
import csv
with open('testdata.txt','rb')as inf, open('testdata2.txt','wb')as outf:
csvreader = csv.DictReader(inf)
fieldnames =['Node']+ csvreader.fieldnames # add column name to beginning
csvwriter = csv.DictWriter(outf, fieldnames)
csvwriter.writeheader()for node, row in enumerate(csvreader,1):
csvwriter.writerow(dict(row,Node='node %s'% node))
Si c'était le contenu du fichier d'entrée:
ID,Test Description,file-name,module,view,path1,path2
id 1,test 1 desc,test1file.txt,test1module,N,test1path1,test1path2
id 2,test 2 desc,test2file.txt,test2module,Y,test2path1,test2path2
id 3,test 3 desc,test3file.txt,test3module,Y,test3path1,test3path2
id 4,test 4 desc,test4file.txt,test4module,N,test4path1,test4path2
id 5,test 5 desc,test5file.txt,test5module,Y,test5path1,test5path2
Ce serait le contenu du fichier de sortie après l'exécution du script:
Remarque que l'ajout de données pour un champ de chaque ligne avec dict(row, Node='node %s' % node) comme le montre ne fonctionne que lorsque le champ nom est un mot clé valide pour l'argument (c'est à dire Python valide identifiant) — comme Node.
Des identificateurs valides composé uniquement de lettres, de chiffres, et des caractères de soulignement, mais pas commencer par un chiffre ou un caractère de soulignement, et ne peut pas être la langue de mots clés tels que classe, pour, retour, mondiale, passer, impression (en Python 2), ou élever.
Pour contourner cette limitation, il serait nécessaire de le faire séparément:
for node, row in enumerate(csvreader,1):
row['Invalid Keyword']='node %s'% node # add new field and value
csvwriter.writerow(row)
Vous pouvez utiliser le module CSV à lire dans votre fichier CSV et d'écrire une version éditée avec un ajouté colonne. Rappelez-vous que l'ajout d'une colonne est l'ajout d'une entrée supplémentaire à la fin de chaque ligne.
delimiter=' ' est quelque peu atypique, c'est un euphémisme. Comment cela s'ajoute une nouvelle colonne? Cette juste remplace la totalité du fichier csv
Il serait assez facile à faire à l'aide de la
csv
du moduleDictReader
etDictWriter
classes. Voici un exemple qui lit l'ancien fichier et écrit du nouveau dans le passe unique.Un
DictReader
instance renvoie à chaque ligne logique ou de la ligne du fichier comme un dictionnaire dont les clés sont les noms des champs. Vous pouvez spécifier explicitement les noms de champ ou ils peuvent être lus à partir de la première ligne du fichier, comme illustré dans l'exemple.Vous doit pour spécifier les noms de champ lors de la création d'un
DictWriter
instance et l'ordre des noms de champ définit l'ordre dans lequel ils apparaîtront sur chaque ligne du fichier de sortie. Dans ce cas, le nom du champ est simplement ajouté au début de la liste de noms à partir du fichier d'entrée — quels qu'ils soient.Si c'était le contenu du fichier d'entrée:
Ce serait le contenu du fichier de sortie après l'exécution du script:
Remarque que l'ajout de données pour un champ de chaque ligne avec
dict(row, Node='node %s' % node)
comme le montre ne fonctionne que lorsque le champ nom est un mot clé valide pour l'argument (c'est à dire Python valide identifiant) — commeNode
.Des identificateurs valides composé uniquement de lettres, de chiffres, et des caractères de soulignement, mais pas commencer par un chiffre ou un caractère de soulignement, et ne peut pas être la langue de mots clés tels que classe, pour, retour, mondiale, passer, impression (en Python 2), ou élever.
Pour contourner cette limitation, il serait nécessaire de le faire séparément:
OriginalL'auteur martineau
Vous pouvez utiliser le module CSV à lire dans votre fichier CSV et d'écrire une version éditée avec un ajouté colonne. Rappelez-vous que l'ajout d'une colonne est l'ajout d'une entrée supplémentaire à la fin de chaque ligne.
Un exemple de sortie avec le module CSV (http://docs.python.org/library/csv.html)
delimiter=' '
est quelque peu atypique, c'est un euphémisme.Comment cela s'ajoute une nouvelle colonne? Cette juste remplace la totalité du fichier csv
OriginalL'auteur sichinumi