这里有一个看起来很单纯的Python文件。
print(“x”)
不幸的是,如果我们运行它,就会得到这个错误信息。
$ python example.py
File "/Users/chainz/tmp/hints/q.py", line 1
print(“x”)
^
SyntaxError: invalid character '“' (U+201C)
问题是代码中使用了卷曲的引号字符 (“” 和''),但 Python 只支持直引号字符 ("" 和'')。很可能代码是用一个自动将直引号转换为卷曲的程序编辑的,比如 Microsoft Word。
(在维基百科上可以看到更多关于卷曲引号和直引号的信息)。
要修复这样的代码,你需要把卷曲的引号转换回它们的直引号。 你可能可以用编辑器中的查找和替换功能来做到这一点。 或者,你可以用 Python 来进行替换。
filename = "example.py"
text = open(filename).read()
text = text.replace("“", '"').replace("”", '"').replace("‘", "'").replace("’", "'")
open(filename, "w").write(text)
你可以把这段代码保存在一个新的文件中 (例如:fixer.py),把filename 改为你的破损文件的名字,然后运行python fixer.py 。
其他错误
也有可能遇到由使用大括号引起的不同的错误信息。 如果你有一个开头的直引号,但有一个结尾的大括号,错误将是。
$ python example.py
File "/.../example.py", line 1
print("x”)
^
SyntaxError: unterminated string literal (detected at line 1)
如果你使用单曲引号,错误显示这些是有问题的字符。
$ python example.py
File "/Users/chainz/tmp/hints/example.py", line 1
print(‘x’)
^
SyntaxError: invalid character '‘' (U+2018)