s.endswith的问题 - python3.4

时间:2014-07-13 22:02:39

标签: python string

请告诉我为什么我的代码没有像我认为的那样在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")的性质是假的。那个怎么样? 感谢

3 个答案:

答案 0 :(得分:3)

您的行包含换行符,因此条件从不计算为true。

在致电s.strip()之前,您应该str.endswith()换行,或者检查s. endswith("d\n")

答案 1 :(得分:1)

您只需要检查if line.endswith("d"):,它将评估为TrueFalse您不需要使用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不打印它。 (它打印一个新行)!

祝你好运!