Dans Ruby, qu'est-ce qu'une expression régulière qui identifie les virgules entre guillemets (par exemple, "dog, cat, foo, bar")? Mon but est de convertir un fichier CSV en TSV, et certains de mes champs contiennent des chaînes avec des virgules entre guillemets que je veux conserver.RegEx dans Ruby pour convertir CSV en TSV
0
A
Répondre
3
Est-ce que ça doit être une regex? Peut juste analyser le CSV en utilisant votre bibliothèque de csv de fav, et puis rejoindre en utilisant des onglets?
require 'csv'
test = '"foo,bar,baz",one,two,three'
CSV.parse_line(test).join("\t")
"foo,bar,baz\tone\ttwo\tthree"
+0
Merci, Doon! J'ai fini par utiliser FasterCSV :: parse_line qui a fonctionné comme prévu. – mbm
+0
Conversion d'un fichier (qui ne contient pas d'onglets): 'CSV.read (" temp.csv "). Map {| row | row.join ("\ t")} .join ("\ n") '. – user495470
Les fichiers CSV peuvent causer de sérieux problèmes avec une regex en raison du potentiel des virgules intégrées dans les champs. Comme @Doon a suggéré que vous feriez mieux de compter sur un analyseur. –