【问题标题】:c# convert string to python objectc# 将字符串转换为python对象
【发布时间】:2014-02-27 01:27:08
【问题描述】:

我的店里发生了各种各样的疯狂。这个请求很奇怪,但请理解我别无选择。我需要将 ironpython 字典的字符串表示形式转换为实际的 ironpython 字典......我需要在 c# 中完成。字典是从数据库中检索出来的,所以我不可能以任何其他形式得到它。

我在这里取得了一些进展。到目前为止,我有以下内容:

        string python_dict = SqlSession.getPythonDictFromDatabase();

        ScriptEngine engine = Python.CreateEngine();

        ScriptSource source = engine.CreateScriptSourceFromString(python_dict, SourceCodeKind.Expression);

        PythonDictionary dict = source.Execute<PythonDictionary>();

以上代码成功将字符串转换为python字典。到目前为止很棒。不幸的是,字典中的嵌套类仍然是字符串。那里有各种各样的东西,从字符串和整数到 SetCollections。我需要将整个数据结构转换为 python 对象的 c# 表示。可以想象,我可以在执行转换的同时遍历结构,就像我最初对 dict 所做的那样。这似乎非常混乱。它似乎也很脆弱。

这一切最糟糕的部分是什么?实际上,我大约一个月前就开始工作了。源代码丢失了。任何人都知道如何将这个字符串转换为完全表示的 python 数据结构?

【问题讨论】:

  • 你能简单地使用 JSON - 在 C# 中编码,在 Python 中解码,反之亦然 - 并将其作为文本传递?我的意思是,当然,这是一个“平底船”,但它可能只是工作.. 无论如何,所有序列化器/反序列化器(包括使用 JSON 的那些)只是“在执行转换时遍历结构”,这只是支持所有给定数据/域需要支持的转换。至于“[不]丢失”代码,请考虑使用 Git 或 Hg 等 SCM 工具 ;-)

标签: c# data-structures casting ironpython


【解决方案1】:

如果你真的这样做(我不确定为什么......),那么你不能只使用 C# Dictionary 数据结构:

我可以想象在表演的同时遍历结构 就像我最初对 dict 所做的那样进行转换。

这正是我要做的。创建一个用于解析字符串的函数并将每个数据结构转换为 C# 等效项(伪代码)

PythonDictionary convert_to_python_dict_from_string(dict_string)
{    
    // check type of each field
    // perform appropriate conversions
    // add to python dict object
    // return object 
}

进行转换的函数将像你真正做到的那样脆弱/铁皮,就像任何其他序列化程序一样

祝你好运! :)

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2022-01-01
    相关资源
    最近更新 更多