La question a déjà une réponse acceptée, mais il convient de noter quelle était la cause du problème original:
Ceci est la partie du problème:
split('\t')
Ruby a plusieurs formes de chaîne entre guillemets, qui ont des différences, celles généralement utiles.
Je cite Ruby Programming at wikibooks.org:
... guillemets doubles sont conçus pour interpréter les caractères évadés tels que nouvelles lignes et onglets de sorte qu'ils apparaissent comme nouvelles lignes et onglets réels lorsque la chaîne est rendue pour l'utilisateur. Les guillemets simples affichent cependant la séquence d'échappement réelle , par exemple affichant \ n au lieu d'une nouvelle ligne.
Lire plus loin dans l'article lié à voir l'utilisation de %q
et %Q
cordes. Ou Google pour "délimiteurs de ruby string", ou voir this SO question.
Alors '\t'
est interprété comme "barre oblique inverse + t", alors que "\t"
est un caractère de tabulation.
String#split
prendra aussi un Regexp
, qui dans ce cas pourrait lever l'ambiguïté:
split(/\t/)
Modifier votre question d'inclure l'entrée et la sortie échantillon - qui aidera les gens à répondre à votre question. – Gishu