语法错误 使用xlwings, sys.path进行RunPython操作。

问题描述 投票:0回答:1

操作系统 Windows 10 Pro

xlwings、Excel和Python的版本(0.9.0、Office 365、Python 3.8.2)

我是通过VBA使用xlwings的新手。我在VBA和Python上运行了一个教程网页上的精确语法,但它给出了这样的错误。

  File "<string>", line 1

    import sys, os; sys.path[0:0]=os.path.normcase(os.path.expandvars(r'C:\Users\User\Trial2;C:\Users\User\Trial2\Trial2.zip;C:\Users\User\Anaconda3\')).split(';'); import Trial2;Trial2.main()                                                                                                                                                               

SyntaxError: invalid syntax

我在VBA中使用的是原始语法,而在Python中使用的语法是这样的。

import xlwings as xw


#@xw.sub  # only required if you want to import it or run it via UDF Server
def main():
    wb = xw.Book.caller()
    wb.sheets[0].range("A1").value = "Hello xlwings!"


#@xw.func
def hello(name):
    return "hello {0}".format(name)


if __name__ == "__main__":
    xw.Book("Trial2.xlsm").set_mock_caller()
    main()

我几乎找不到任何关于这个问题的线索 所以我希望有人能给我一个解决方案。

python excel syntax-error sys xlwings
1个回答
0
投票

这是 python 字符串的一个怪癖。即使是原始字符串,反斜杠也会逃过引号,所以... r"ends in quote\"" 是有效的。这也意味着原始字符串不能以一个反斜杠结束。r"ends in slash\" 是一个语法错误。如果你需要用反斜杠结束一个字符串,你就不能使用生字符串。"ends in slash\\" 是可以的。

我不知道失败的字符串从何而来,但你需要把它改成

import sys, os; sys.path[0:0]=os.path.normcase(os.path.expandvars('C:\\Users\\User\\Trial2;C:\\Users\\User\\Trial2\\Trial2.zip;C:\\Users\\User\\Anaconda3\\')).split(';'); import Trial2;Trial2.main()

请看 Python词汇分析

即使在原始文字中,引号也可以用反斜线来转义,但反斜线仍然保留在结果中;例如,r"\""是一个有效的字符串文字,由两个字符组成:一个反斜线和一个双引号;r"\"不是一个有效的字符串文字(即使是一个原始字符串也不能以奇数个反斜线结束)。特别是,一个原始的文字不能以一个反斜线结束(因为反斜线会转义下面的引号字符)。

© www.soinside.com 2019 - 2024. All rights reserved.