请告诉我为什么我的代码没有像我认为的那样在python 3.4中运行:
r = input("file address")
file = open(r)
for line in file:
if line.endswith("d") is True:
print(line)
我的文件是* .txt,包含以下几行:
This line ends with a
this line ends with b
this line ends with c
this line ends with d
我希望python打印出最后一个,因为它有" d"在末尾。但是,该计划没有做任何事情。 当我将布尔值更改为" false"时,python会打印出所有行。所以我猜python看到布尔" line.endswith(" d")的性质是假的。那个怎么样? 感谢
答案 0 :(得分:3)
您的行包含换行符,因此条件从不计算为true。
在致电s.strip()
之前,您应该str.endswith()
换行,或者检查s. endswith("d\n")
。
答案 1 :(得分:1)
您只需要检查if line.endswith("d"):
,它将评估为True
或False
您不需要使用if line.endswith("d") is True
并使用line.strip().endswith("d")
}删除\n
。
最后一个字符是"\n"
,因此line.endswith("d")
永远不会是True
答案 2 :(得分:1)
这样做是因为你没有剥离每一行。您需要为每行删除line = line.strip()
(反斜杠-n)运行\n
,这是每行实际结束的内容。所以你的行:This line ends with a this line ends with b this line ends with c this line ends with d
实际上以\n
(反斜杠-n)结尾,但你没有看到它,因为python不打印它。 (它打印一个新行)!
祝你好运!