En supposant qu'il n'y a qu'un seul type de cancer:
fichier 'source.txt':
sit1, gene1, cancer
sit1, gene2, cancer
sit1, gene3, cancer
sit1, gene4, cancer
sit1, gene5, cancer
sit2, gene1, cancer
sit2, gene2, cancer
sit2, gene3, cancer
sit3, gene1, cancer
# Ruby
Posté par jiyuu . En réponse au message parser un fichier texte. Évalué à 1.
fichier 'source.txt':
sit1, gene1, cancer
sit1, gene2, cancer
sit1, gene3, cancer
sit1, gene4, cancer
sit1, gene5, cancer
sit2, gene1, cancer
sit2, gene2, cancer
sit2, gene3, cancer
sit3, gene1, cancer
fichier 'parser.rb':
src = open('source.txt') {|io| io.readlines }
r = Hash.new {|h,k| h[k]=[] }
src.inject(r) do |h,l|
sit, *genes = l.split(', ')[0..-2]
h[sit] << genes
h[sit].flatten
h
end
r.map {|k,v| puts "#{k}, #{v.join(', ')}, cancer" }