以下有效的python代码
In [49]: print('hello\n')
hello
但是当我使用ast模块的parse方法时,它会返回语法错误
In [47]: code = "print('hello\n')"
In [48]: ast.parse(code)
File "<unknown>", line 1
print('hello
^
SyntaxError: EOL while scanning string literal
In [51]: eval(code)
File "<string>", line 1
print('hello
^
SyntaxError: invalid syntax
在这种情况下,为什么ast模块无法解析有效的python代码?
答案 0 :(得分:2)
您必须转义代码中的\
code = "print('hello\\n')"
ast.parse(code)
# <_ast.Module object at 0x7fd68cb48cc0>
或者您可以添加r
前缀以指示需要转义字符串中的所有内容
code = r"print('hello\n')"
ast.parse(code)
# <_ast.Module object at 0x7fd68cb48ef0>
答案 1 :(得分:1)
您应该写:
code = "print('hello\\n')"
答案 2 :(得分:1)
您需要使用多行注释'''YourCode'''
或"""YourCode"""
例如:
import ast
code = "print('''hello\n''')"
print(ast.parse(code))