我正在尝试在 txt 文件中搜索字符串。这是一个示例 txt 文件。我正在与:
abc
def
ghi
centre
jkl
mno
pqr
123
456
我正在尝试匹配文件中的行,如果找到匹配项,则退出程序;如果未找到匹配项,则将行添加到文件中:
我正在使用以下代码:我的问题是,如果我尝试匹配文件中的“abc”,它会正常工作,但如果我尝试匹配“pqr”,我会看到我的第二个 if block 也是执行。
以下是我目前的代码。
#!/usr/bin/python
new_data = raw_input("Enter txt:")
file_name = "test.txt"
with open(file_name, "r") as F:
data = F.readlines()
for num, line in enumerate(data, start=1):
if line.strip() == new_data:
print "exists {} {}".format(new_data, num)
break
if line.strip() != new_data:
print "new data {} to be entered into line {}".format(new_data, num)
else:
print "break"
以下是我尝试匹配文件中的“123”时得到的输出:
Enter txt:123
new data 123 to be entered into line 1
new data 123 to be entered into line 2
new data 123 to be entered into line 3
new data 123 to be entered into line 4
new data 123 to be entered into line 5
new data 123 to be entered into line 6
new data 123 to be entered into line 7
exists 123 8
请您参考如下方法:
IIUC,你想让第二 block 只有在数据不存在的时候才执行。好吧,试试这个:
for num, line in enumerate(data, start=1):
if line.strip() == new_data:
print "exists {} {}".format(new_data, num)
break
else:
print "new data {} to be entered into line {}".format(new_data, num)
您可以利用 for...else 语法。如果循环没有中断,即文件中不存在数据,则执行 else。
