首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免在Python中使用连字符时出现语法错误

避免在Python中使用连字符时出现语法错误
EN

Stack Overflow用户
提问于 2018-07-30 16:20:44
回答 2查看 298关注 0票数 0

我正在编写一个python脚本,通过Aspen Plus的COM函数自动执行一些模拟。但是,当我想要获得分子量的值时,我必须写这样的代码:

代码语言:javascript
复制
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函数,如下所示:

代码语言:javascript
复制
MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW-1")

但是我仍然得到一个None对象,但是如下所示:

代码语言:javascript
复制
MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components")

工作,得到"COMObject FindNode“,所以我认为问题也在连字符中。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2018-09-21 20:01:48

谢谢你告诉我

对于包含连字符的情况,应执行以下操作,而不是转义"\“字符:

代码语言:javascript
复制
MW = aspen.Tree.FindNode(r'\Data\Properties\Parameters\Pure Components\REVIEW-1\Input\VALUE')
票数 1
EN

Stack Overflow用户

发布于 2018-07-31 16:33:13

好吧,我试图在Python中解决这个问题,但在Aspen中重命名节点会更容易解决。我也注意到,空格有时也会带来问题,所以也应该重新命名。在某些情况下,它不能做,或者我不知道怎么做,例如:

代码语言:javascript
复制
MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW1\\Input\\VALUE\\MW ACID")

它返回一个None对象,我不知道如何将其重命名为"MW ACID",但有一种获取值的巧妙方法:

代码语言:javascript
复制
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和字节表示法来表示非中断连字符,但也不起作用。

致以问候!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51589733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档