Sto cercando di ottenere Clojure per leggere un file, mettere la prima riga in una variabile e il resto in un'altra variabile. io non riesco a trovare il modo di fare questo e mi piacerebbe se qualcuno mi potrebbe dare un testa a testa,Make Clojure riconosce e isola la linea in un file
risposta
;; for Clojure 1.1
(require '[clojure.contrib.duck-streams :as io])
;; for bleeding edge
(require '[clojure.java.io :as io])
(with-open [fr (io/reader "/path/to/the/file")]
(let [[first-line & other-lines] (doall (line-seq fr))]
;; do stuff with the lines below...
...))
Aggiornamento: Ah, appena capito che ho preso "il resto" dalla questione per indicare "il resto delle righe nel file", quindi nel precedente other-lines
è un seq di tutte le righe nel file tranne il primo.
Se avete bisogno di "una stringa contenente il resto del contenuto del file", invece, è possibile utilizzare il codice di cui sopra, ma poi (require '[clojure.contrib.str-utils2 :as str])
/(require '[clojure.string :as str])
(a seconda della versione di Clojure si sta utilizzando) e dire (str/join "\n" other-lines)
di ricongiungersi other-lines
in una stringa; o, in alternativa, usare qualcosa di simile a questo:
(let [contents (slurp "/path/to/the/file")
[first-line rest-of-file] (.split #"\n" contents 2)]
...)
Clojure testa:
(require '[clojure.string :as str])
(let [[f & r] (str/split (slurp "foo.txt") #"\n")]
... do something with f and r ...)
ED: In qualche modo sono riuscito a riconoscere la risposta di Michał e pensavo a eliminarlo, ma dal momento che è un po 'diverso e mostra clojure .string.split, non lo farò.
- 1. Make ImageMagick riconosce un carattere
- 2. Isola l'esecuzione di JavaScript
- 3. Qual è la differenza tra `make: console` e` make: command`?
- 4. La modifica dei file .ui richiede un "make clean"
- 5. come "eseguire" make file
- 6. In Clojure 1.3, Come leggere e scrivere un file
- 7. Non riesco a capire questo esempio clojure make-vipera
- 8. Perché GNU Make eliminare un file
- 9. Sputa e sorseggia un vettore in Clojure
- 10. Come eseguire un file Clojure?
- 11. scrittura su un file in Clojure
- 12. Il dardo si isola come lavoratore
- 13. Come rilevare il SO in un file make?
- 14. make gvim considera linea avvolta come nuova riga
- 15. Ottenere un callstack in Clojure
- 16. splitting una variabile in un file di make
- 17. Dipende dal file make stesso
- 18. Mappe e record di uguaglianza in Clojure
- 19. Come aggiungere flag di compilazione -g in un file make?
- 20. Scala e Clojure in un unico progetto
- 21. Leggi csv in un elenco in clojure
- 22. Come richiedere e fornire file clojure?
- 23. Come compilare file in clojure
- 24. = e == in Clojure
- 25. Python apertura e la lettura dei file uno di linea
- 26. "Isola di isolamento" di Garbage Collection
- 27. make distcheck e test che necessitano di file di input
- 28. Come evitare la macro anaforica in Clojure?
- 29. visualizzazione e la descrizione in linea
- 30. Modificare il file di codice sorgente Clojure in clojure
quando esco in un file ottengo un sacco di [\ all'interno del file. Sai perché? – bleakgadfly
In questa soluzione, la stringa restituita da slurp è divisa in righe. Ciò significa che (str/split str # "\ n") restituirà un vettore di linee. Quindi, la prima riga è associata a f e il resto del vettore a r. Vedi anche il secondo paragrafo della risposta di Michał. – danlei
ho provato la soluzione e ho fatto un (println (str f r)). La prima riga è perfetta ma il resto è in parantheses (errore di battitura) e virgolette. così: Questa è la prima linea. ("" "E questo è" "altre linee"). Un modo per sbarazzarsi delle parate e delle virgolette? Non vedo come la soluzione di Michaels risolva questo problema. – bleakgadfly