import sys
from cclib.parser import ccopen
from cclib.bridge import makeopenbabel
import openbabel as ob
parser =3D ccopen(sys.argv[1])
data =3D parser.parse()
distort =3D data.atomcoords[0] - data.vibdisps[0]
obmol =3D makeopenbabel(distort, data.atomnos)
obconv =3D ob.OBConversion()
ok =3D obconv.SetOutFormat("XYZ")
obconv.WriteFile(obmol, "distorted.xyz")`
这个简单的python脚本会出现类似
的语法错误"test.py", line 7
> parser = 3D ccopen(sys.argv[1])
> ^
>SyntaxError: invalid syntax"
任何人都可以帮忙解决这个问题。感谢
答案 0 :(得分:4)
这看起来像quoted-printable encoding,用于电子邮件。您的Python源代码不应引用可打印编码,因此您需要手动解码,无需编码再次获取源,或使用a decoder。
正如您从example on Wikipedia所见,=3D
解码为=
。您还可以通过评估Python中的chr(int('3D', 16))
来验证这一点,它将3D
解释为十六进制值(基数为16),并查找由该数字表示的ASCII字符。
答案 1 :(得分:-2)
虽然这会修复代码。如果因缺少库而出错,我不会感到惊讶。
import sys
from cclib.parser import ccopen
from cclib.bridge import makeopenbabel
import openbabel as ob
parser = ccopen(sys.argv[1])
data = parser.parse()
distort = data.atomcoords[0] - data.vibdisps[0]
obmol = makeopenbabel(distort, data.atomnos)
obconv = ob.OBConversion()
ok = obconv.SetOutFormat("XYZ")
obconv.WriteFile(obmol, "distorted.xyz")`