python - 支持整数字典键的快速 Perl<->Python 序列化

标签 python perl serialization dictionary

我正在寻找可以在 Perl 和 Python 中使用的快速(xml 太慢了)序列化方法。

不幸的是,我不能使用 JSON(以及许多其他格式),因为它总是将字典键的类型从整数更改为字符串。我需要保留 key 类型的序列化/反序列化。

python :

>>> import json
>>> dict_before = {1:'one', 20: 'twenty'}
>>> data = json.dumps(dict_before)
>>> dict_after = json.loads(data)

>>> dict_before
{1: 'one', 20: 'twenty'}            #integer keys
>>> dict_after
{u'1': u'one', u'20': u'twenty'}    #string keys

欢迎提出任何建议。

最佳答案

你可以使用 yaml。

>>> import yaml
>>> dict_before = {1:'one', 20: 'twenty'}
>>> data = yaml.safe_dump(dict_before)
>>> dict_after = yaml.safe_load(data)
>>> dict_after
{1: 'one', 20: 'twenty'}

我遇到了类似的问题。我想在 Perl 和 Python 中共享一个配置文件,我不得不使用 yaml。

您可以在 python 中安装 yaml 模块:

pip install PyYAML

不过,整数键在 perl 中将被转换为字符串 => Legal values for Perl hash key

关于python - 支持整数字典键的快速 Perl<->Python 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18380324/

相关文章:

mysql - PERL PAR 打包程序 MYSQL libmysql_.dll

c# - 在 C# 中切换类类型

c# - 首次调用 C# Web 服务时速度较慢

python - 从生成器中的下游函数获取结果

perl - 如何将数组和散列数据类型传递给 perl 中的子例程参数?

python - 未使用 PYQT5 多播 UDP 接收数据报

regex - 从命令行,仅在另一个正则表达式匹配后才进行 perl 替换匹配

javascript - 使用C#将函数序列化为json中的参数

python - 如何比较一个 DataFrame 与另一个单行 DataFrame 并相应地着色或修改单元格?

python - 有没有办法在 python 中使用点运算符传递参数?