簡體   English   中英

使用Python將VBScript解析和構建為Python代碼

[英]Parsing and structuring VBScript into Python code using Python

我是編程的初學者,想知道最簡單的方法。

我有VBS代碼,我想使用python腳本將其轉換為python代碼。

樣例代碼:

oDesign.ChangeProperty Array("NAME:AllTabs", Array("NAME:LocalVariableTab", Array("NAME:PropServers", "LocalVariables"), Array("NAME:NewProps", Array("NAME:ps2pad", "PropType:=", "VariableProp", "UserDef:=", true, "Value:=", "31mil")), Array("NAME:ChangedProps", Array("NAME:ps2pad", "Hidden:=", false))))

要更改為Python腳本,它需要看起來像這樣:

oDesign.ChangeProperty(
[
    "NAME:AllTabs",
    [
        "NAME:LocalVariableTab",
        [
            "NAME:PropServers", 
            "LocalVariables"
        ],
        [
            "NAME:NewProps",
            [
                "NAME:ps1drill",
                "PropType:="        , "VariableProp",
                "UserDef:="     , True,
                "Value:="       , "17.7mil"
            ]
        ],
        [
            "NAME:ChangedProps",
            [
                "NAME:ps1drill",
                "Hidden:="      , False,
                "Value:="       , "17.7mil"
            ]
        ]
    ]
])

這不是確切的代碼,但是與我正在使用的代碼相當接近。 如您所見,只有幾處不同:必須丟棄所有“ Array”語句,添加一些括號,並添加括號。

我當時正在考慮使用正則表達式,但這似乎有些冗長。

我不確定執行嘗試的優點,但是如果您只想將其轉換為有效的python代碼,則可以從以下步驟開始:

  • 將false分配給False
  • 將true分配給True
  • 創建一個Array函數或類
  • 使用ChangeProperty方法創建一個類,並將oDesign實例化為實例

然后在示例代碼的末尾添加一個'('),並在示例代碼的末尾添加另一個')',將進行編譯:

例如。

import pprint

class Design:
    def ChangeProperty(*val):
        pprint.pprint(val)

true = True
false = False
Array = lambda * v: v
oDesign = Design()

# now with the simple addition of the two parentheses I mentioned above, 
# your VBS code is valid python.

oDesign.ChangeProperty(Array("NAME:AllTabs", Array("NAME:LocalVariableTab", Array("NAME:PropServers", "LocalVariables"), Array("NAME:NewProps", Array("NAME:ps2pad", "PropType:=", "VariableProp", "UserDef:=", true, "Value:=", "31mil")), Array("NAME:ChangedProps", Array("NAME:ps2pad", "Hidden:=", false)))))

#現在是有效的python代碼,並在我的系統上打印此代碼:

(<__main__.Design instance at 0x000000000248AF08>,
 ('NAME:AllTabs',
  ('NAME:LocalVariableTab',
   ('NAME:PropServers', 'LocalVariables'),
   ('NAME:NewProps',
    ('NAME:ps2pad',
     'PropType:=',
     'VariableProp',
     'UserDef:=',
     True,
     'Value:=',
     '31mil')),
   ('NAME:ChangedProps', ('NAME:ps2pad', 'Hidden:=', False)))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM