说我有一个包含以下内容的文件
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
这没有成功。任何帮助将不胜感激。
答案 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
(换行符)连接起来。这有一个缺点,虽然不会考虑文件的最后一行(因为它不会有新的行字符)。我在这里制作它只是为了参考