简体   繁体   中英

How do I print only the first instance of a string in a text file using Python?

I am trying to extract data from a .txt file in Python. My goal is to capture the last occurrence of a certain word and show the next line, so I do a reverse () of the text and read from behind. In this case, I search for the word 'MEC', and show the next line, but I capture all occurrences of the word, not the first.

Any idea what I need to do?

Thanks!

This is what my code looks like:

import re

from file_read_backwards import FileReadBackwards

with FileReadBackwards("camdex.txt", encoding="utf-8") as file:
    for l in file:
        lines = l

        while line:
            if re.match('MEC', line):
                x = (file.readline())
                x2 = (x.strip('\n'))
                print(x2)
                break
            line = file.readline()

The txt file contains this:

MEC
29/35
MEC
28,29/35

And with my code print this output:

28,29/35
29/35

And my objetive is print only this:

28,29/35

Get rid of the extra imports and overhead. Read your file normally, remembering the last line that qualifies.

with ("camdex.txt", encoding="utf-8") as file:
    for line in file:
        if line.startswith("MEC"):
            last = line

print(last[4:-1])    # "4" gets rid of "MEC "; "-1" stops just before the line feed.

If the file is very large, then reading backwards makes sense -- seeking to the end and backing up will be faster than reading to the end.

This will give you the result as well. Loop through lines, add the matching lines to an array. Then print the last element.

import re
with open("data\camdex.txt", encoding="utf-8") as file:
    result = []
    for line in file:
        if re.match('MEC', line):
            x = file.readline()
            result.append(x.strip('\n'))

print(result[-1])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM