使用:symbols从Python生成Clojure EDN

时间:2018-06-22 21:32:59

标签: python clojurescript edn

我正在尝试使用EDN在简单的Python服务器和使用ClojureScript编写的内置浏览器应用程序之间进行通信。

因此服务器需要为浏览器生成并返回EDN格式的数据块。

我已经安装了https://github.com/swaroopch/edn_format,它似乎是推荐的Python EDN库。

但是我希望能够生成一个使用Clojure符号作为键的映射。例如。 {:a 1 :b 2}

但是,如果我创建Python字典{"a":1, "b":2}并将其传递给转储函数,则最终的EDN会将键保留为字符串,而不是符号。

很明显,Python中没有:symbols。但是,是否有一种方法可以说服edn_format.dumps将字典的字符串键转换为它们?还是有一个更好的Python edn库可以做到这一点?

1 个答案:

答案 0 :(得分:4)

您可以使用keyword_keys参数:

edn_format.dumps({'a': 1}, keyword_keys=True)
# => {:a 1}

Keyword构造函数:

edn_format.dumps({edn_format.Keyword('a'): 1})
# => {:a 1}