操作系统 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 字符串的一个怪癖。即使是原始字符串,反斜杠也会逃过引号,所以... 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"\"不是一个有效的字符串文字(即使是一个原始字符串也不能以奇数个反斜线结束)。特别是,一个原始的文字不能以一个反斜线结束(因为反斜线会转义下面的引号字符)。