Python 列出不遵守if语句的理解
这是我程序的存根Python 列出不遵守if语句的理解,python,Python,这是我程序的存根 with open(fi) as f: lines = f.readlines() lines = [line.split('!')[0] for line in lines if not line.startswith('!') and line.strip()] # Removing line and inline comments for line in lines: print line, len(line), bool(not
with open(fi) as f:
lines = f.readlines()
lines = [line.split('!')[0] for line in lines if not line.startswith('!') and line.strip()] # Removing line and inline comments
for line in lines:
print line, len(line), bool(not line.startswith('!') and line.strip())
给我输出,例如
conduction-guess double_array optional 68 True
valence character optional 68 True
valence-guess double_array optional 68 True
68 False
saturated-bond-length-factor double required 68 True
bool值为False的行不应该包括在内吗?我迷路了。
我认为这可能是短路,但翻转表达式也没有帮助
为了澄清这一点,我希望我的列表是上面代码部分中以“True”结尾的行的列表。如果您的文件中有一行在第一列之外的某处有一个感叹号,您可能会看到类似的内容。e、 g:
line = " ! "
如果您的文件中有一行在第一列以外的其他地方有一个感叹号,您可能会看到类似的情况。e、 g:
line = " ! "
line.strip()
返回一个新字符串,它不是布尔值
更新代码:
with open(fi) as f:
lines = [ line.strip() for line in f ]
# remove exclamation points
lines = [ line.split('!')[0] for line in lines
if not line.startswith('!')
]
# 3rd col will always be True
for line in lines:
print line, len(line), bool(not line.startswith('!'))
line.strip()
返回一个新字符串,它不是布尔值
更新代码:
with open(fi) as f:
lines = [ line.strip() for line in f ]
# remove exclamation points
lines = [ line.split('!')[0] for line in lines
if not line.startswith('!')
]
# 3rd col will always be True
for line in lines:
print line, len(line), bool(not line.startswith('!'))
第一个
not line.startswith(“!”)和line.strip()
在与第二个line
值不同的一组值上运行。列表理解会将行
替换为第一个的列表
-在行
的原始值中每个字符串的分隔字段,然后代码将打印出这个新的行
。例如,如果行
最初包含字符串“!foo”
,则此字符串将在理解中传递条件,但仅传递前面的部分
-单个空格-将保存到新的行
列表中,单个空格不会导致line.strip()
返回true。第一个非line.startswith(“!”)和line.strip()
在与第二个行
值不同的一组上运行。列表理解会将行
替换为第一个的列表
-在行
的原始值中每个字符串的分隔字段,然后代码将打印出这个新的行
。例如,如果行
最初包含字符串“!foo”
,则此字符串将在理解中传递条件,但仅传递前面的部分
-单个空格-将保存到新的行
列表中,单个空格不会导致行.strip()
返回true。如果返回空字符串会怎么样?如果行
是空字符串或空白,则是行.strip()
将被视为假
。实际上,在读取文件时,除了最后一行之外,所有行都有换行符。当not line
为true时,表示您已到达文件的结尾。如果返回空字符串会怎么样?如果line
是空字符串或空白,则yesline.strip()
将被视为False
。实际上,在读取文件时,除了最后一行之外,所有行都有换行符。当not line
为真时,意味着您已到达文件的末尾。事实上,这就是发生的情况,但这就是我逃避的原因。哦,我明白了。理解是把上面的一行变成纯空白,然后被打印的声明解释为错误,但是已经太晚了,列表已经列出来了。事实上这就是正在发生的事情,但我没有找到原因。哦,我明白了。理解是把上面的一行变成纯粹的空白,然后打印声明会将其解释为错误,但是已经太晚了,列表已经列出来了。