J'ai un fichier CSV délimité par des tabulations (test.txt) avec un contenu semblable au suivant (mon CSV n'a pas d'en-tête):
12.33 Apple Orange "this is" great "to eat"
10.99 Pear Lemon "this" is an - "aquired taste"
J'ai essayé les deux opérations suivantes pour importer les données dans un tableau:
$Headers = "price","item1","item2","desc"
[array]$arrCSVobjects = import-csv "test.txt" -Delimiter "`t" -Header $Headers
(ou)
$Headers = "price","item1","item2","desc"
[array]$arrCSVobjects = Get-Content -Path "test.txt " | Out-String | ConvertFrom-CSV -Delimiter "`t" -Header $Headers
Quelle que soit mon approche, PS continue de vouloir supprimer les guillemets de départ des éléments DESC du tableau (et les résultats ressemblent à ceux-ci - ils ne sont pas identiques aux données d'origine):
price item1 item2 desc
----- ----- ----- ----
12.33 Apple Orange this is great "to eat"
10.99 Pear Lemon this is an - "aquired taste"
Lorsque vous comparez avec les données d'origine, vous pouvez voir que certains des guillemets sont manquants. Comment puis-je empêcher (empêcher) PS de supprimer les guillemets des éléments comme celui-ci? Je dois importer le fichier CSV, manipuler les données puis les exporter à nouveau vers un autre fichier CSV. Chaque fois que je cherche une réponse sur Internet, je continue d’obtenir des résultats sur la façon de supprimer les guillemets, mais je n'arrive pas à trouver comment les conserver. Je ne veux pas que les guillemets soient supprimés lors du processus d'importation ou d'exportation.
Merci d'avance,
STGdb
la source
desc
semble contenir que cet argument, l'argument sans indication.Réponses:
Votre fichier n'est pas valide au format CSV. (Eh bien, il n'y a pas de norme officielle, mais il y en a une de facto .) Les guillemets doubles ont une signification particulière en CSV pour les champs environnants. Ceux qui ne sont pas des "Surrounders" doivent être échappés d'une manière ou d'une autre, généralement en les doublant, comme ceci:
Vous devez également entourer tout le champ de guillemets, sinon l’analyseur devient confus. C'est pourquoi le champ commence et se termine par trois guillemets doubles.
Si vous ne pouvez pas modifier le format du fichier, vous pouvez simplement l'analyser vous-même en séparant les onglets. Ceci ne fonctionnera bien entendu que si vous pouvez garantir qu'il n'y aura pas d'onglets dans les champs réels. Les onglets doivent uniquement être utilisés comme séparateurs de champs.
Sortie:
la source