Ho un file JSON che è di circa 1 MB (menu.json). Ci sono molte proprietà al suo interno che spero di rimuovere.
Ho un file di testo: Strings.txt - questo contiene nomi di proprietà che sono note necessarie in JSON
Sto cercando di scorrere attraverso il mio file JSON riga per riga. Se una riga contiene una stringa trovata in strings.txt, desidero rimuovere quella riga.
Ecco il mio codice:
tmp = File.open("clean.json", "w")
File.open("menu.json") do |json|
File.open("strings.txt") do |x|
tmp.puts json.each_line unless json.include? x
end
end
Il risultato scritto in clean.json è #<Enumerator:0x0077ff36b04b468>
Qualcuno potrebbe dirmi cosa sto facendo di sbagliato? Questa è la mia prima sceneggiatura di Ruby.
Contenuti di strings.txt
:
Item1
Item2
Item3
Si scopre che Item1, Item2 o Item3 vengono letti come \ "Item1 \"
Devo capire perché questo sta accadendo e come gestirlo.
risposte:
0 per risposta № 1each_line
senza un blocco restituisce un enumeratore, che è quello che stai scrivendo nel tuo file di output. Quello che vuoi è qualcosa di più simile a questo:
tmp = File.open("clean.json", "w")
File.open("menu.json") do |json|
File.open("strings.txt") do |x|
json.each_line { |line| tmp.puts(line) unless line.include?(x) }
end
end
tmp.close
Questo è ovviamente piuttosto costoso poiché passerà attraverso tutto menu.json
esattamente quante volte strings.txt
ha delle linee.