Skip to main content
 首页 » 编程设计

python之使用python在文本文件中搜索行

2025年05月04日15JeffreyZhao

我正在尝试在 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。