【发布时间】:2016-05-03 19:37:17
【问题描述】:
和这个很相似:
How to tell if a string contains valid Python code
唯一的区别是我没有给出整个程序,而是一次只对一行代码感兴趣。
正式地说,如果存在使用该特定行的任何语法上有效的 Python 程序,我们就说一行 Python 是“语法上有效的”。
例如,我想将这些识别为语法上有效的行:
for i in range(10):
x = 1
因为可以在一些语法上有效的 python 程序中使用这些行。
我想将这些行标识为语法上无效的行:
for j in range(10 in range(10(
x =++-+ 1+-
因为没有语法正确的 python 程序可以使用这些行
检查不需要太严格,只要足够好就可以过滤掉明显的虚假陈述(如上图所示)。当然,该行是作为字符串给出的。
【问题讨论】:
-
仅供参考,
x =+ 1在语法上是有效的。它将+1分配给x。 -
隐式行连接怎么样(这会使
for j in range(10也可能在语法上有效) -
for j in range(10也有效,如果下一行以):之类的形式继续,if x < 3也可以是多行表达式的一部分。几乎任何东西都可以是多行字符串的一部分。 -
我认为您需要回答的问题是为什么您需要/想要这样做
-
for在语法上仍然有效。赋值不再有效,除非它是三引号字符串或续行注释的一部分。我认为您不太了解自己要做什么。
标签: python validation