所以这是我的代码:
with open('lines.txt') as f:
for i in f:
line = input('line: ')
if line not in i.split('\n'):
print(line, i.split('\n'), end='\n')
else:
continue
它应该从文本文件中获取行并让我输入第一个,第二个,第三个等等。直到文件中没有更多行,并且如果我输错了行,它会打印“No!”但它说“不!”对于我输入的每一个输入,我需要做些什么来使这个代码工作?
答案 0 :(得分:4)
很好的尝试!这是一个解决方案,使用有用的rstrip
字符串方法来处理那些讨厌的换行符。这样做你想要的,逐行询问输入,如果你弄错了,它会移动到下一个。
with open('lines.txt') as f:
for i in f:
i = i.rstrip()
line = input('line: ')
if line != i:
print('No!')
答案 1 :(得分:3)
.split()
返回一个列表。您可能想要检查该行是否 列表。
执行:
if line in i.split('\n'):
答案 2 :(得分:1)
您正在将字符串与行
中的列表进行比较 if line != i.split('\n')[0]:
您可以尝试与数组中的第一个元素进行比较:
if line != i.split('\n')[0]:
或者,如果您可以安全地忽略前导和尾随空格:
if line != i.strip()
你拥有的else块会在每次正确输入的行之后显示第二个未经检查的输入,这是你想要的吗?
答案 3 :(得分:1)
你应该匹配整条线吗?在这种情况下你想要的只是
if line != i.strip():
如果您需要忽略双倍空格等。它更复杂,您需要执行以下操作:
match = True
myWords = line.strip().split()
fileWords = i.strip().split()
for myWord, fileWord in zip(myWords, fileWords):
if myWord != fileWord:
match = False
if Match:
line = input('line: ')
else:
print('No')
如果出现错误,问题是否要求您不要移到下一行?