d'abord, vous devez diviser une ligne en mots, et chaque mot doit être mis en correspondance avec char->symbol
fonction de conversion:
quelque chose comme ceci:
user> (require '[clojure.string :as cs])
nil
user> (defn to-syms [s]
(let [words (cs/split (cs/trim s) #"\s+")]
(map #(map (comp symbol str) %) words)))
#'user/to-syms
user> (to-syms "this is a line")
;;=> ((t h i s) (i s) (a) (l i n e))
MISE À JOUR
extension :
d'abord vous obtenez tous les mots de str tion, le fractionnement par des espaces:
(cs/split (cs/trim "aaa bbb ccc") #"\s+")
;;=> ["aaa" "bbb" "ccc"]
alors nous avons besoin de faire une fonction qui traite le mot conversion à une liste de symboles. Comme chaîne de Clojure est une séquence de caractères, vous pouvez map
dessus, la production nouvelle collection:
(defn char->sym [c]
(symbol (string c))
user> (char->sym \a)
;;=> a
user> (map char->sym "asd")
;;=> (a s d)
;; in my example i use the functional composition: (comp symbol str)
;; that creates the function that works exactly like char->sym
;; let's wrap this mapping to a function:
(defn word->syms [w]
(map char->sym w))
user> (word->syms "asd")
;;=> (a s d)
;; and now we just have to transform the whole list of words:
user> (map word->syms ["asd" "fgh"])
;;=> ((a s d) (f g h))
en plus, pour convertir la liste des symboles pour sauvegarder chaîne que vous pouvez simplement appeler la fonction str
avec les articles de la liste que arguments (apply str '(a s d)) => "asd"
ou utiliser clojure.string/join
pour que: (clojure.string/join '(a s d)) => "asd"
Veuillez ne plus répondre à vos questions. Ce n'est pas comment ce site fonctionne. –
Vous avez demandé le code Clojure, pas le code Python. Modifier votre question pour poser des questions sur Python maintenant qu'il y a des réponses n'est pas utile. – DJMcMayhem