简体   繁体   中英

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?

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

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

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