使用IronPython转义引号

本文关键字:转义 IronPython 使用 | 更新日期: 2023-09-27 18:19:23

我正在使用IronPython从c#中计算用python编写的表达式。表达式是两个字符串的组合:Foo + "Bar"。不幸的是,使用engine.CreateScriptSourceFromString消除了引号,所以这个表达式的结果是FooBar而不是Foo"Bar"。那么在传递到CreateScriptSourceFromString之前如何转义引号来实现这一点呢?

这是我目前使用的:

engine.CreateScriptSourceFromString("Foo + '"Bar'"")

编辑:这会导致syntaxerroreexception,因为Python将Foo解释为变量…但是应该把它作为字符串来处理

使用IronPython转义引号

我想我已经修好了。以下方法奏效了(据我目前估计):因此,python引擎需要一个字符串进行解析,我将实际表达式用双引号括起来。因此,Python识别"Foo + '"Bar'""而不仅仅是Foo + "Bar"(这会导致上面提到的异常)。我实际上做的是对表达式进行两次转义。

因此,我们得到以下代码片段:
string expression = "Foo + '"Bar'"";
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString(
        "'"" + expression.Replace("'"", "'''"") + "'"");
object result = source.Execute();