在Python中使用连字符避免语法错误

时间:2018-07-30 08:20:44

标签: python python-3.x win32com aspen

我正在编写一个python脚本,以通过其COM功能使用Aspen Plus自动执行一些模拟。但是当我想获得分子量值时,我必须写这样的东西:

import os
import win32com.client as win32

aspen = win32.Dispatch('Apwn.Document')

aspen.InitFromArchive2(os.path.abspath('Aspen\\Flash.bkp'))

MW = aspen.Tree.Data.Properties.Parameters.Pure Components.REVIEW-1.Input.VALUE.MW ACID.Value

但是由于连字符不能用作标识符,因此它在REVIEW-1中启动了语法错误。我该如何使用它们?

编辑:

我将点合成器替换为Aspen COM的FindNode功能,

MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW-1")

但是我仍然得到一个None对象,但是这个:

MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components")

工作正常,获取“ COMObject FindNode”,所以我认为问题也在于连字符。

谢谢!

2 个答案:

答案 0 :(得分:1)

感谢小费

对于具有连字符的情况,应使用以下命令代替转义“ \”字符:

unlist()

答案 1 :(得分:0)

好吧,我在尝试用Python解决它时很费劲,但是在Aspen重命名节点时更容易解决。我也注意到,空格有时也会带来问题,因此也应重命名。在某些情况下,这是无法完成的,或者我不知道如何做,例如:

MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW1\\Input\\VALUE\\MW ACID")

它返回None对象,并且我不知道重命名“ MW ACID”是什么,但是有一种棘手的方法来获取值:

MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW1\\Input\\VALUE")

for o in MW.Elements:
    if o.Name == "MW ACID":
        MW_acid = o.Value

目前它对我有用,但是由于迭代,它会变慢。因此,如果有人知道如何在Python中解决问题而无需重命名,它仍然会有所帮助。我尝试对不间断的连字符使用unicode和字节表示法,但是它也不起作用。

致谢!