以特定字符结尾的打印行

时间:2016-03-27 12:48:55

标签: python file

说我有一个包含以下内容的文件

xxx;xxx;1
xxx;xxx;1
xxx;xxx;2
xxx;xxx;2

我想只打印以1结尾的行。我试过

f = open("input.txt","r")
endNum= str(raw_input("Enter the end number of a line you'd like to see: "))
for line in f:
    if line.endswith(divChoice):
        print line

这没有成功。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您需要删除尾随空格:

if line.rstrip().endswith(endNum):

您还应该使用with打开文件,raw_input已经是str:

with open("input.txt") as f:
    endNum = raw_input("Enter the end number of a line you'd like to see: ")
    for line in f:
        if line.rstrip().endswith(endNum):
            print line

正如@John在评论中指出的那样,你应该使用.endswith(endNum)而不是.endswith(divChoice)

您还有另一个问题,"21".endswith("1")为True但21不是1,如果您想要找到完全匹配,则拆分并进行比较:

with open("input.txt") as f:
    endNum = raw_input("Enter the end number of a line you'd like to see: ")
    for line in f:
        if line.rstrip().rsplit(";",1)[1] == endNum:
            print line

答案 1 :(得分:0)

首先删除\n字符的行。 line = line.strip('\n')然后检查结束。也纠正你的程序。您要在endNum中保存用户输入,但请使用divChoice检查结尾。

或者在\n(不推荐)

中检查endswith
if line.endswith(endNum+'\n'):
    print line

+会将输入与\n(换行符)连接起来。这有一个缺点,虽然不会考虑文件的最后一行(因为它不会有新的行字符)。我在这里制作它只是为了参考