Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to search for word in text file and print part of line with Python?

I'm writing a Python script. I need to search a text file for a word and then print part of that line. My problem is that the word will not be an exact match in the text file.

For example, in the below text file example, I'm searching for the word "color=".

Text File ex:

ip=10.1.1.1 color=red house=big
ip=10.1.1.2 color=green house=small
ip=10.1.1.3 animal = dog house=beach
ip=10.1.1.4 color=yellow house=motorhome

If it finds it, it should print to a new text file "color=color", not the whole line.

Result Text File ex:

color=red
color=green
color=yellow

My code:

for line_1 in open(file_1):
    with open(line_1+'.txt', 'a') as my_file:
        for line_2 in open(file_2):
            line_2_split = line_2.split(' ')
            if "word" in line_2:
                if "word 2" in line_2:
                    for part in line_2:
                        line_part = line_2.split(): #AttributeError: 'list' object has no attribute 'split'
                        if "color=" in line_part():
                            print(line_part)

I believe I need to use regular expressions or something like line.find("color="), but I'm not sure what or how.

Question: How do I search a text file for a word (not an exact match) and the print only a specific part of each line?

like image 277
hjames Avatar asked Dec 12 '22 12:12

hjames


2 Answers

Here's one way - split each line by spaces, then search each part for "color=":

with open("textfile.txt") as openfile:
    for line in openfile:
        for part in line.split():
            if "color=" in part:
                print part
like image 57
Brionius Avatar answered May 18 '23 13:05

Brionius


Well, it may not be much, but you could always use regex:

m = re.search(r'(color\=.+?(?= )|color\=.+?$)', line)
if m:
    text = m.group() # Matched text here
like image 28
kirbyfan64sos Avatar answered May 18 '23 15:05

kirbyfan64sos