查找单词的代码无法创建正确的输出

2024-09-23 00:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个程序,读取文本文件并搜索短语“CategreeAnimali” 然后当它找到它时,我希望它搜索“乌切洛”和“安非比奥”,当它找到“安非比奥”时,我希望它继续阅读下一个“分类动物”的文件 以下是文本文件:

CATEGORIA ANIMALI
MAMMIFERO
PESCE
UCCELLO = tucano
ANFIBIO = rana
RETTILE
CATEGORIA ANIMALI
MAMMIFERO
PESCE
UCCELLO = gru
ANFIBIO = rospo
RETTILE
CATEGORIA ANIMALI
MAMMIFERO
PESCE
UCCELLO = gru
ANFIBIO = rana
RETTILE

这是代码

file = open('testfile.txt', 'r')

search_phrase1 = "CATEGORIA ANIMALI"
search_phrase2 = "UCCELLO"
search_phrase3 = "ANFIBIO"
markerInd1 = 0
markerInd2 = 0
markerInd3 = 0
reserveMarker = 0

for line in file.readlines():
    reserveMarker += 1
    if line.find(search_phrase1) >= 0:
        markerInd1 += 1
        print(line)
        for line in file.readlines():
            if line.find(search_phrase2) >= 0:
                markerInd2 += 1
                print(line)
            elif line.find(search_phrase3) >= 0:
                markerInd3 += 1
                print(line)
                break

print(markerInd1)
print(markerInd2)
print(markerInd3)
print(reserveMarker)

我希望获得的产出:

CATEGORIE ANIMALI

UCCELLO = tucano

ANFIBIO = rana

CATEGORIE ANIMALI

UCCELLO = gru

ANFIBIO = rospo

CATEGORIE ANIMALI

UCCELLO = gru

ANFIBIO = rana

3
3
3
19

它真正的样子:

CATEGORIE ANIMALI

CATEGORIE ANIMALI

CATEGORIE ANIMALI

3
0
0
19

Tags: searchlinefileprintgrucategoriecategoriaanimali
1条回答
网友
1楼 · 发布于 2024-09-23 00:21:53

我将使用with open而不是open,以便文件正确关闭。您也不需要第二个for循环。我想这就是你的问题所在。那和break需要被移除。参见下面的示例

import os


search_phrase1 = "CATEGORIA ANIMALI"
search_phrase2 = "UCCELLO"
search_phrase3 = "ANFIBIO"
markerInd1 = 0
markerInd2 = 0
markerInd3 = 0
reserveMarker = 0

with open('testfile.txt', 'r') as file:
    for line in file.readlines():
        reserveMarker += 1

        if search_phrase1 in line:
            markerInd1 += 1
            print(line)
        if search_phrase2 in line:
            markerInd2 += 1
            print(line)
        elif search_phrase3 in line:
            markerInd3 += 1
            print(line)

print(markerInd1)
print(markerInd2)
print(markerInd3)
print(reserveMarker)

结果:

CATEGORIA ANIMALI

UCCELLO = tucano

ANFIBIO = rana

CATEGORIA ANIMALI

UCCELLO = gru

ANFIBIO = rospo

CATEGORIA ANIMALI

UCCELLO = gru

ANFIBIO = rana

3
3
3
18  # I got 18 instead of 19 so I think you have an extra blank line in your data.

相关问题 更多 >