0
votes

Comment diviser les lignes CSV puis dupliquer cette ligne?

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: xxx

Donc, j'ai besoin de diviser la 2e colonne par le ; délimiter et créer une nouvelle ligne basée sur le reste des informations de la ligne.


2 commentaires

awk est parfaitement adapté pour résoudre ce problème. Prenez le temps de travailler à travers des parties pertinentes de la Tutoriel AWK , en particulier le Split ( ) fonction et pour 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.


4 Réponses :


0
votes

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 ";".

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 ";".

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é.


0 commentaires

2
votes

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)


0 commentaires

2
votes

Voici une solution python 3. Remarque Utilisation de Newline = '' code> par Documentation de lecture / graveur de CSV : xxx pré>

Si toujours à l'aide de Python 2, utilisez la syntaxe ouverte suivante à la place: P>

with open('source.csv','rb') as fin:
    with open('target.csv','wb') as fout:


0 commentaires

0
votes

Utilisation de Miller ( https://github.com/johnkerl/miller ) est très simple. Utilisation de cette commande xxx

vous avez xxx


0 commentaires