J'ai un fichier CSV à partir duquel j'ai besoin de générer un nouveau fichier avec de nouvelles lignes. J'ai une certaine expérience dans Bash et Python.
Exemple: p> Donc, j'ai besoin de diviser la 2e colonne par le ; code> délimiter et créer une nouvelle ligne basée sur le reste des informations de la ligne. p> p>
4 Réponses :
Si vous avez un fichier CSV, le moyen le plus simple est d'ouvrir Excel, puis de naviguer vers Fichier> Ouvrir et sélectionnez "Tous les fichiers" et naviguez jusqu'au fichier CSV que vous souhaitez modifier. Lorsque vous ouvrez ce fichier, il devrait vous donner la possibilité d'indiquer quel personnage que vous souhaitez utiliser comme délimiteur et que vous pouvez entrer ";". p>
Il devrait y avoir quelques options supplémentaires que vous venez d'accepter, puis vous aurez un fichier XLS avec les champs divisés par le ";". p>
Pour obtenir de cela à la table de votre choix, je suggérerais de créer une table de pivotement. Ma réponse est basée sur cela étant un seul éteint, alors que si vous devrez répéter cette fonction, il serait préférable d'écrire quelque chose dans Excel VBA ou Python. Heureux de conseiller plus loin si vous êtes coincé. P>
supposer que c'est toujours la deuxième colonne. Changez le numéro de colonne si c'est une colonne différente (je compte cela à partir de 1 et pas 0 pour la facilité d'utilisation).
import csv
newData = []
columnNumber = 2
with open('data.csv') as csvfile:
line = csv.reader(csvfile, delimiter = ',')
for row in line:
cStr = row[columnNumber-1].split(';')
for i in range(0,len(cStr)):
temp = []
for j in range(0, len(row)):
if(j==columnNumber-1):
temp.append(cStr[i])
else:
temp.append(row[j])
newData.append(temp)
with open('output.csv', 'w', newline="") as outFile:
writer = csv.writer(outFile)
writer.writerows(newData)
Voici une solution python 3. Remarque Utilisation de Si toujours à l'aide de Python 2, utilisez la syntaxe ouverte suivante à la place: P> Newline = '' code> par Documentation de lecture / graveur de CSV : with open('source.csv','rb') as fin:
with open('target.csv','wb') as fout:
Utilisation de Miller ( https://github.com/johnkerl/miller ) est très simple. Utilisation de cette commande vous avez p>
awk code> est parfaitement adapté pour résoudre ce problème. Prenez le temps de travailler à travers des parties pertinentes de la Tutoriel AWK , en particulier leSplit ( ) code> fonction etpour code> boucles. Puis modifiez votre Q pour montrer votre meilleure tentative pour résoudre le problème. Incluez votre sortie actuelle et tous les messages d'erreur (exactement, copier / coller). Bonne chance.Merci pour votre réponse. Je suis dans la situation habituelle au travail, où quelqu'un a besoin de cela hier et je suis de creuser et de tester les choses avec AWK, SED, etc. à la disponibilité appropriée.