使用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解释为变量…但是应该把它作为字符串来处理
我想我已经修好了。以下方法奏效了(据我目前估计):因此,python引擎需要一个字符串进行解析,我将实际表达式用双引号括起来。因此,Python识别"Foo + '"Bar'""
而不仅仅是Foo + "Bar"
(这会导致上面提到的异常)。我实际上做的是对表达式进行两次转义。
string expression = "Foo + '"Bar'"";
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString(
"'"" + expression.Replace("'"", "'''"") + "'"");
object result = source.Execute();