J'ai un fichier CSV avec le format suivant:
Exemple CSV: P>
bear,brown,mean,large ant,black,strong,tiny cat,yellow,moody,small
3 Réponses :
Vous pouvez commencer par: Ajoutez un "au début et à la fin? p> p> p>
Si je ne me trompe pas, je pense qu'il existe également un moyen de remplacer les lampes de la même manière (évitant ainsi avoir à ajouter manuellement les citations finales au début et à la fin de chaque ligne). Bien que ces caractères puissent différer entre les éditeurs de texte ... dans tous les cas, il suffit d'ajouter des guillemets le début et la fin du document n'est pas suffisant car cela transformerait l'ensemble du document CSV à plusieurs rangées en un document CSV à une rangée.
Vous êtes correct, Textmate Regexps semble supporter des choses comme ^ et $, peut-être que cela peut être utilisé pour résoudre ce problème: ^ (. *) $ => "1 $ 1"
Voici les portions importantes de la regex. J'espère que je l'ai bien compris lorsque je suis converti au format textmate: p>
Recherche - Remplacer - Recherche Explication: Trouvez tous les personnages qui ne sont pas une virgule, jusqu'à ce que nous atteignions une virgule, ou la fin de la ligne. Capturez la correspondance pour une chaîne à citer dans une variable et capturer la correspondance de virgule / fin de ligne dans une autre variable. P>
Remplacez l'explication: la chaîne d'origine, citée et la virgule ou la fin de ligne qui le suit. P> ([^,] *) (, | $) code> p>
"1 po $ 2 code> p>
Cela a travaillé principalement dans NotePad ++, mais a laissé la première citation et la dernière citation sur chaque ligne. Ce post de débordement de pile fixe qui est corrigé: Stackoverflow.com/ Questions / 11003761 / Notepad-Ajout-to-to-to-to-to-Li Ne
@DRCORD: La syntaxe Regex est légèrement différente pour presque chaque mise en œuvre que j'ai vue, en particulier le style d'échappement. Regardez-la, je ne vois rien de mon regex qui ne devrait pas fonctionner avec une évasion appropriée, en supposant que vos captures de capture, des classes de caractères négatifs et de vos matchs «globales» (c'est-à-dire plusieurs matchs sur la même ligne dans un seul trouver / remplacer). Par exemple, si vous utilisez VIM, la commande de recherche / remplacement devient: :% s / \ ([^,] * \) \ (, \ | $ \) / "\ 1" \ 2 / g CODE> - TESTEMENT LE TEMPSÉ MAINTENANT, et cela fonctionne avec l'exemple de l'OP :) Peut-être que vous avez échappé à vos guillemets ou capturez-la de manière incorrecte?
Autre accord avec ma regex est que cela ne gérera pas déjà cité des choses ou des virgules échappées. Avec de nombreux CSV simples, cela suffira.
Tout comme une note (à cette question ancienne et bien manutée), vous voudrez utiliser ([^,] *) (, | $) si le CSV dispose d'un espace de premier plan après la virgule que vous ne souhaitez pas inclure dans les citations (il y a un espace après ^,)