la conversion d'un espace délimité par fichier CSV
J'ai un fichier texte contenant des données tabulaires. Ce dont j'ai besoin pour faire est d'automatiser la tâche de l'écriture d'un nouveau fichier texte délimité par des virgules à la place de l'espace délimité, extrait de quelques colonnes à partir des données existantes, modifier l'ordre des colonnes.
Ceci est un extrait de l'4 premières lignes de l'origine des données:
Nombre de lignes: 8542 Algorithme |Date |Heure |Longitude |Latitude |Pays 1 2000-01-03 215926.688 -0.262 35.813 Algérie 1 2000-01-03 215926.828 -0.284 35.817 Algérie
Voici ce que je veux à la fin:
La Longitude,La Latitude,Pays,Date,Heure -0.262,35.813,l'Algérie,2000-01-03,215926.688
Des conseils sur la façon d'aborder ce?
Il y a quelque chose de mal avec la façon dont vous avez présenté votre extrait de code, je crois que c'est ce que vous avez prévu.
Oui c'est ce que je voulais, merci!
est de l'ordre importatnt
Oui, l'ordre est important. la latitude/longitude champs doivent être les deux premières colonnes de la nouvelle sortie
Semble que les OP ne peuvent pas rejoindre le chat jusqu'à ce qu'il a 20 réputation... Comment puis-je faire don de lui?
Oui c'est ce que je voulais, merci!
est de l'ordre importatnt
Oui, l'ordre est important. la latitude/longitude champs doivent être les deux premières colonnes de la nouvelle sortie
Semble que les OP ne peuvent pas rejoindre le chat jusqu'à ce qu'il a 20 réputation... Comment puis-je faire don de lui?
OriginalL'auteur MLau | 2012-01-14
Vous devez vous connecter pour publier un commentaire.
Je suppose que le fichier est séparé par des tabulations, pas d'espaces.
Si oui, vous pouvez essayer quelque chose comme:
Ce code n'est pas testé, aucun bug est parti pour vous à titre d'exercice.
en fournissant à ses séparées par des tabulations, devrait réorganiser en-tête et de données à l'intérieur d'un
for line in file
boucle.Toujours à travailler sur votre méthode. Obtenir ceci: "impossible d'exécuter le script - erreur de syntaxe - ne peut pas affecter à littérale" a Changé tous les noms de champ pour le nom correct.
essayez édité le post de code de l'échantillon.
Pourriez-vous me joindre à l' chat.stackoverflow.com/rooms/6712/paulos ?? Je vais vous aider.
OriginalL'auteur Paulo Scardine
Vous pouvez utiliser le
csv
module et d'un lecteur avec le' '
délimiteur de lire vos données, et l'utilisation de l'écrivain à partir du même module (avec un séparateur (virgule) pour produire la sortie.En fait, le premier exemple dans le
csv
documentation du module utilisedelimiter=' '
.Vous pouvez utiliser un
DictReader
/DictWriter
et de spécifier l'ordre des colonnes dans son constructeur (fieldnames
liste: différent pour lecteur/enregistreur si vous voulez re-commande) à la sortie de la les entrées dans l'ordre que vous souhaitez.(Vous devrez peut-être sauter/ignore vos deux premières lignes lors de la production de la sortie.)
EDIT:
Voici un exemple pour traiter avec multi-parole des noms de pays:
Utiliser le
restkey=
et concaténer les dict entrée pour cette valeur, qui est une liste de ce qu'il en reste (icirestkey='rest'
). Cette affiche:delimiter=' '
?vous devriez être en mesure d'utiliser le
restkey
pour cela (voir mise à jour). Bien sûr, dans le premier exemple, il faudra un peu de nettoyage avec les deux premiers de la ligne, mais même lors de l'utilisation d'une plaine (nonDictReader
), il devrait être possible d'obtenir ce qu'il en reste et de le joindre ensemble.merci pour l'explication.
OriginalL'auteur Bruno
str.split()
sans aucun argument sera divisée par la longueur de l'espace.operator.itemgetter()
prend plusieurs arguments et retourne un tuple.OriginalL'auteur Ignacio Vazquez-Abrams
Je suppose que l'idée importante est que vous devez utiliser '\t' comme délimiteur @Paulo Scardine.
Je voulais juste ajouter que les pandas est une très bonne bibliothèque pour la manipulation de données de la colonne.
OriginalL'auteur Nima Mousavi