0
votes

Convertir .txt en .csv lorsque certaines lignes ont des données manquantes pour certaines colonnes (Python)

J'ai un fichier .txt qui est actuellement formaté de type similaire: xxx

La première colonne n'aura jamais de valeurs manquantes.

J'essaie d'utiliser Python pour convertir cela en un fichier .csv . Je sais comment faire cela si j'ai toutes les données de colonne pour chaque ligne, mais mon .txt manque des données dans certaines colonnes. Comment puis-je convertir cela en un .csv tout en veillant au même type de données dans la même colonne? Merci:)


5 commentaires

Ouvrez le fichier, divisé par \ n ou \ r \ n , puis divisez chaque ligne par , . Vous avez ensuite une liste contenant chaque valeur et vous pouvez le traiter manuellement pour faire ce que vous voulez.


En gros, vous vous demandez comment identifier les données manquantes dans chaque ligne et ajouter une cellule vide dans le CSV comme ceci: anita , 35, www.website.com ?


@Aaron ouais quelque chose comme ça


La première colonne peut-elle avoir des valeurs manquantes? Les types de données sont-ils de chaque colonne connus à l'avance, etc.


@aws_apprentice La première colonne n'a aucune valeur manquante. IDK sur les types de données mais chaque chose de la 4ème colonne est une URL, chaque chose de la 3ème colonne est une valeur entière, etc.


3 Réponses :


-1
votes

Une suggestion serait de faire un chèque de regex, si vous pouvez assumer une sorte d'uniformité. Par exemple, construisez une liste de modèles de regex, car chaque donnée semble différente.

Si la deuxième colonne que vous avez lu correspond à tous les caractères et espaces, c'est probablement la nourriture. D'autre part, si c'est un match de chiffre, vous devez supposer que la nourriture manque. Si c'est un match d'URL, vous avez manqué les deux. Vous voudrez être approfondi avec vos cas de test, mais si les données réelles sont similaires à votre exemple, vous disposez de 3 cas relativement uniques, avec une chaîne, un entier et une URL. Cela devrait faire écrire des tâches de regex relativement triviales. Importer Re et utiliser Re.Search devrait vous aider à tester chaque regex sans trop de frais généraux.


2 commentaires

Si j'utilise Regex, comment affecter les données à une certaine colonne? par exemple. Si je découvre que la deuxième colonne est une correspondance chiffrée, que ferais-je écrire pour le faire pour que la 2e colonne de mon CSV soit vide et que la 3ème colonne a le chiffre? Merci


Construisez une chaîne si vous en avez besoin et remplissez-la sous «% S,% S,% s,% S»% (nom, aliments, identifiant, site Web). Remplissez ces variables avec ce que vous trouvez, défaut d'une chaîne vierge, puis écrivez dans un fichier.



1
votes

divisé par des virgules. Vous savez que le modèle doit être mot, mot, int (je suppose), chaîne dans le modèle de www.ww.ward.word.

  1. S'il n'y a que 1 mot à l'avant au lieu de 2, ajoutez une autre virgule après le premier mot.
  2. Si le nombre est manquant, ajoutez une virgule après le deuxième mot.
  3. etc ...

    Dites que vous obtenez une ligne "Susie, www.regexr.com", vous savez qu'il y a un mot manquant et un numéro manquant. Ajoutez 2 virgules après le premier mot.

    C'est essentiellement un tas de déclarations ou d'une déclaration de cas de commutation.

    Il y a probablement un moyen plus élégant de le faire, mais mon esprit est frit de traiter des problèmes de serveur et de téléphone toute la matinée.

    Ceci n'est-ce pas testé de quelque manière que ce soit, j'espère que je ne m'embarrasserais pas seulement:

    xxx


7 commentaires

Pour aider à la question ci-dessous, vous pouvez utiliser des références de retour ( régulier-expressions.info/backref.html ) Pour faire cela. Just Retour Référencez le chiffre, puis remplacez-le par la valeur du numéro avec une virgule ajoutée devant elle.


J'ai mis du code que j'ai esquissé pour lui, mais il devrait pouvoir aller avec une description générale d'une solution comme je l'ai suggéré. Cela ne me dérange pas de mettre le code sur demande, mais je ne veux pas non plus faire les devoirs de quelqu'un pour eux. Être éliminé par un groupe de personnes n'encourage pas vraiment les gens à aider, cependant. Je pense que je pourrais éviter de me soumettre à la fois après les votes baissés :-(.


Merci pour l'aide! Je vais essayer ceci. De plus, cela ne concerne pas les devoirs, c'est pour mon placement de travail coopératif haha.


Merci Seshie. Je m'excuse pour le ton de mon commentaire. J'ai eu beaucoup de stress et d'anxiété de plusieurs projets majeurs dont je suis responsable au travail et que cela me reçoit. Il est sorti de mon poteau. Bonne chance avec votre placement et laissez-moi savoir s'il y a quelque chose que je peux aider avec! Edit : Le courrier électronique peut être correct ou non, je viens de googler. J'ai trouvé cela aussi:


L'Email Regex pourrait ou non être correct, je viens de googler. J'ai trouvé cela aussi: re.match ("^. + @ ([?) [A-ZA-Z0-9 -.] +. ([A-ZA-Z] {2,3} | [0 -9] {1,3}) (]?) $ ", Email). Regex n'a jamais été mon point fort.


@Andy juste assez pour ne pas faire les devoirs de quelqu'un. Commentaire peut donner des conseils. Toutefois, si vous offrez une réponse, vous accepterez le contrôle des gens. La bonne volonté est bonne mais apprendre que les règles aident beaucoup aussi. Acclamations.


Une partie de la publication d'une réponse complète le teste également et vous n'êtes pas évité, car nous ne voulons pas que vous aidez, vous êtes évacué parce que vous ne suivez pas les règles de la communauté



0
votes

J'ai pensé à votre problème et je ne peux offrir qu'une solution à moitié cuite à mesure que votre fichier CSV, lorsque vous avez des données manquantes, ne le montre pas avec quelque chose comme , .

Votre fichier CSV actuel est comme ça xxx

si vous trouvez un moyen de modifier votre fichier CSV pour comme celui-ci xxx

Vous pouvez utiliser le Solution comme ci-dessous. Pour info, j'ai mis votre entrée dans un fichier texte xxx


0 commentaires